ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 2024.2.28
    TIL 2024. 2. 28. 09:51

    코드 카타 중에서 항상 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
Designed by Tistory.