https://programmers.co.kr/learn/courses/30/lessons/42862

 

코딩테스트 연습 - 체육복

점심시간에 도둑이 들어, 일부 학생이 체육복을 도난당했습니다. 다행히 여벌 체육복이 있는 학생이 이들에게 체육복을 빌려주려 합니다. 학생들의 번호는 체격 순으로 매겨져 있어, 바로 앞번

programmers.co.kr

class Solution {
    public int solution(int n, int[] lost, int[] reserve) {
        int answer = 0;
        
        // -1: 도난
	// 0 : 도난 x, 여벌 x (도난당했는데 여벌 있는 경우 포함)
	// 1 : 도난 x, 여벌 o
        int all[] = new int[n];

	// 도난당한 사람 체크
        for (int i : lost) {
            all[i - 1]--;
        }
        
        // 여벌 있는 사람 체크
        for (int i : reserve) {
            all[i - 1]++;
        }

        for (int i = 0; i < all.length; i++) {
            if (all[i] < 0) { // 도난당했을 경우 옆에서 줄 수 있는지 확인
                if ((i != 0) && all[i - 1] > 0) {
                    all[i]++;
                    all[i - 1]--;
                } else if ((i + 1 != all.length) && all[i + 1] > 0) {
                    all[i]++;
                    all[i + 1]--;
                }
            }
        }

        for (int i : all) {
            if (i >= 0) {
                answer++;
            }
        }
        return answer;
    }
}

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

[programmers] 게임 맵 최단거리 / Java  (0) 2021.10.06
[programmers] 키패드 누르기 / Java  (0) 2021.08.18

+ Recent posts