ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Level1) 체육복
    PS/programmers 2020. 9. 8. 11:28
    class Solution {
        public int solution(int n, int[] lost, int[] reserve) {
            int answer = n;
            int[] init = new int[n]; // 2 <= n <= 30, [0 ~ n-1]
    
            // 체육복 잃어버린 사람
            for (int i = 0; i < lost.length; i++) {
                init[lost[i]-1]--;
            }
    
            // 여벌 가지고 있는 사람
            for (int i = 0; i < reserve.length; i++) {
                init[reserve[i]-1]++;
            }
    
            for (int i = 0; i < init.length; i++) {
                if (init[i] == -1) { // 체육복 없는 사람
                    if (i-1 >= 0 && init[i-1] == 1) { // 배열범위안에서 앞사람 여벌
                        init[i]++;
                        init[i-1]--;
                    } else if (i+1 < init.length && init[i+1] == 1) { // 뒷사람 여벌
                        init[i]++;
                        init[i+1]--;
                    } else {
                        answer--;
                    }
                }
            }
    
            return answer;
        }
    }
    

    - 테스트케이스 1개에서 계속 실패해서 다른 코드봄

    - 내가 처음에 적었던거랑 거의 비슷한데 배열돌리때 약간 달라서 수정

    - 앞사람 뒷사람 계산할때 for문 따로 2개 구별해서 적었는데 i-1 >= 0 이런식으로 범위 지정하니까 더 간단해짐

     

     

     


    programmers.co.kr/learn/challenges

     

    'PS > programmers' 카테고리의 다른 글

    Level1) 같은 숫자는 싫어  (0) 2020.09.08
    Level1) 가운데 글자 가져오기  (0) 2020.09.08
    Level1) 2016년  (0) 2020.09.08
    Level1) K번째 수  (0) 2020.09.08
    Level1) 모의고사  (0) 2020.09.08
킹수빈닷컴