체육복

문제

  1. 체육

문제 풀이

문제에 제한 조건으로 학생의 수를 총 30명으로 제한을 두어 학생들의 체육복을 가지고 있는 수를 카운팅 하기 위한 배열을 하나 만든다. 

 

만들어진 배열에 lost 배열값과 같은 인덱스를 가진 배열은 감소연산자로 계산한다. 

 

reverse 배열에 있는 값과 학색 인덱스 값이 같을 때 여분이 있는 것으로 증가 연산자를 사용.

 

마지막으로는 자신이 2이고 이전이나 이후에 0인 값이 있으면 하나를 줄이고 0인 값을 증가시킨다. 

 

1~n 까지 중에 값이 1이 이상인 수의 개수만 카운팅하여 반환한다. 


나의 답안

public static int solution(int n, int[] lost, int[] reserve) {
    int answer = 0;

    int[] student = new int[31];

    Arrays.fill(student, 1);
    for (int i : reserve) {
        student[i]++;
    }

    for (int i : lost) {
        student[i]--;
    }

    for (int i = 1; i <=n ; i++) {
        if (student[i] == 2 && student[i-1] == 0) {
            student[i]--;
            student[i-1]++;
        } else if (student[i] == 2 && student[i + 1] == 0){
            student[i]--;
            student[i+1]++;
        }
    }
    for (int i = 1; i <= n ; i++) {
        if (student[i] >= 1) answer++;
    }
    System.out.println(Arrays.toString(student));
    return answer;
}
 

'Programmers 문제풀이 > Lv.1' 카테고리의 다른 글

완주하지 못한 선수  (0) 2023.03.23
덧칠하기  (0) 2023.03.23
기사단원의 무기  (0) 2023.03.22
로또의 최고 순위와 최저 순위  (0) 2023.03.22
[1차] 다트 게임  (0) 2023.03.22