알고리즘 풀이/프로그래머스

[프로그래머스][Java]체육복

배게 2019. 3. 10. 06:56
728x90

claClo 배열에 현재 학급학생들의 체육복 개수 현황 저장


numlost변수에 체육복을 잃어버린 학생들 수 저장


claClo 배열들을 1로 초기화한 후에 reserve, lost 배열로 여분, 잃어버린 체육복 +-로 정리해줌


현재 체육복이 0개일 경우에 앞뒤 학생들의 체육복 수를 체크하여 나눠주는 이벤트 발생시킴


체육복이 0개가 아닌 학생들 counting시켜준 후 리턴


 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
import java.util.*;
class Solution {
    public int solution(int n, int[] lost, int[] reserve)   {
        int answer = 0;
        int[] claClo = new int[n];
        // 1로 초기화
        Arrays.fill(claClo, 1);

        for (int i = 0; i < lost.length; i++) {
            claClo[lost[i]-1]--;
        }
        for (int i = 0; i < reserve.length; i++) {
            claClo[reserve[i]-1]++;
        }

        for (int i = 0; i < claClo.length; i++) {
            if(claClo[i]==0) {
                if(i!=0 && claClo[i-1]==2) {
                    claClo[i]++;
                    claClo[i-1]--;
                }
                else if(i!= claClo.length-1 && claClo[i+1]==2) {
                    claClo[i]++;
                    claClo[i+1]--;
                }
            }
        }


        for (int i = 0; i < claClo.length; i++) {
            if(claClo[i] != 0) answer++;
        }


        return answer;
    }
}


참고 : https://dreamhollic.tistory.com/entry/%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98-%EB%AC%B8%EC%A0%9C%ED%92%80%EC%9D%B4-6-%EC%B2%B4%EC%9C%A1%EB%B3%B5-JAVA