Algorithm/프로그래머스

[Lv. 1] 체육복

녱녱 2023. 8. 8.

class Solution {
    public int solution(int n, int[] lost, int[] reserve) {
        int answer = n;
        int[] arr = new int[n];
        
        Arrays.fill(arr, 1);
        for(int i : lost)
            arr[i - 1] -= 1;        
        for(int i : reserve)
            arr[i - 1] += 1;    
        
        for(int i = 0; i < arr.length ; i++){
            if(arr[i] == 0){
                if(i > 0 && arr[i - 1] == 2){ //i의 왼쪽과 비교, 배열 내에 있어야 함
                    arr[i - 1]-=1;
                    arr[i]++;
                }                    
                else if(i < n - 1 && arr[i + 1] == 2){ //i의 오른쪽과 비교, 배열 내에 있어야 함
                    arr[i + 1] -= 1;
                    arr[i]++;
                }
                else
                    answer --;                //양쪽 모두 빌릴 사람이 없으면 수업 들을 수 있는 인원에서 빼기
            }
            
        }
        
        
        return answer;
    }
}

여기서도 입력이 n = 5, lost = [2, 4], reserve = [1, 3, 5] 일 때,

첫번째 for문에서는 arr[2-1], arr[4-1]에 대한 연산을 하는 것이다.

즉, lost 전체를 돌면서 lost[i]의 요소값 자체를 가져오는 것!

때문에 for문을 두 번 돌고 나면 [2, 0, 2, 0, 2]의 형태가 되는것이다

'Algorithm > 프로그래머스' 카테고리의 다른 글

[Lv. 2] 카펫  (0) 2023.08.08
[Lv. 1] 달리기 경주  (0) 2023.08.08
[Lv. 2] 영어 끝말잇기  (0) 2023.07.30
[Lv. 1] 개인정보 수집 유효기간  (0) 2023.07.30
[Lv. 1] 햄버거 만들기  (0) 2023.07.29

댓글