-
코드 카타 중에서 항상 for문을 이용해서 만들었던 부분을 다른 방법으로 작성해주신 것을 찾아보게 되었습니다.
친절하게 주석으로 똑같은 의미의 for문에 대해서 정리를 해주셨기 때문에 가져오게 되었습니다.
1. 배열에 같은 값 넣어주기.
int[] have = new int[n]; for(int i = 0; i < n; i++) { have[i] = 1; }
int[] have = Enumerable.Repeat(1, n).ToArray();
System.Linq 에 있는 Enumerable은 Repeat와 Range를 가지고 있습니다.
Enumerable.Repeat(반복 시킬 값, (int)반복할 횟수) : 반복할 횟수만큼 값을 반환합니다. 반복시킬 값의 타입은 상관없습니다.
Enumerable.Range((int)시작값, (int)생성할 갯수) : 시작값에서 갯수만큼 1씩 증가하여 값을 반환합니다.
생성하고 반환하기 때문에 배열 또는 리스트에 저장시켜줘야합니다.
ToArray or ToList
2. 특정 조건의 값의 증가, 감소
for(int i = 0; i< reserve.Length; i++) { have[reserve[i] - 1]++; }
reserve.Select(i => have[i - 1]++).ToArray();
int[] reserve의 값(have의 index + 1 값) i를 가지고 와서 have[i - 1]의 값을 증가시켜줍니다.
이때 .ToArray를 하지 않게 된다면 람다식에서 증가시킨 값은 have에 적용되지 않습니다.
3. 특정 조건에 맞는 갯수 구하기
for(int i = 0; i < have.Length; i++) { if(have[i] >= 1) answer++; }
person.Where(x => x >= 1).Count();
Where은 람다식을 이용하거나, 그냥 조건을 넣으면 조건에 맞는 인덱스 값을 반환합니다.
원하는 것은 조건에 맞는 인덱스 값이 아닌, 인덱스의 갯수이므로 Count를 이용해서 계산해줍니다.
'TIL' 카테고리의 다른 글
2024.3.6 (3) 2024.03.06 2024.3.5 (1) 2024.03.05 2024.2.27 (0) 2024.02.27 2024.2.26 - UIManager (1) 2024.02.26 2024.2.21 - Json (0) 2024.02.21