체육복 (자바)

김재현·2023년 11월 30일
0

알고리즘 풀이

목록 보기
38/89
post-thumbnail
post-custom-banner

문제

업로드중..

정답 코드

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

        int[] students = new int[n];

        // 강탈
        for (int i=0;i<lost.length;i++) {
            students[lost[i]-1]--;
        }

        // 더 있는애들
        for (int i=0;i< reserve.length;i++) {
            students[reserve[i]-1]++;
        }
        
        //빌려옴
        if (students[0]<0 && students[1]>0) {
            students[0]++;
            students[1]--;
        }
        for (int i=1;i<n-1;i++) {
            if(students[i]<0) {
                if(students[i-1]>0) {
                    students[i]++;
                    students[i-1]--;
                } else if (students[i+1]>0) {
                    students[i]++;
                    students[i+1]--;
                }
            }
        }
        if (students[n-1]<0 && students[n-2]>0) {
            students[n-1]++;
            students[n-2]--;
        }
        
        // 0 이상인 애들 카운트
        for (int s : students) {
            if (s>=0) answer++;
        }
        
        return answer;
    }
}

빌려올 때 맨 앞번호와 맨 뒷번호는 예외적으로 양쪽에서 빌려올 수 없으므로 따로 빼서 처리해줬다.
이런식으로 풀어서 풀기를 많이 연습해서 그런지 특별히 어려움은 없었다.

다른 사람 풀이

class Solution {
    public int solution(int n, int[] lost, int[] reserve) {
        int[] people = new int[n];
        int answer = n;

        for (int l : lost) 
            people[l-1]--;
        for (int r : reserve) 
            people[r-1]++;

        for (int i = 0; i < people.length; i++) {
            if(people[i] == -1) {
                if(i-1>=0 && people[i-1] == 1) {
                    people[i]++;
                    people[i-1]--;
                }else if(i+1< people.length && people[i+1] == 1) {
                    people[i]++;
                    people[i+1]--;
                }else 
                    answer--;
            }
        }
        return answer;
    }
}

로직 자체는 내가 풀이한 것과 같다.
다른 점은 나는 맨 앞과 끝을 따로 빼서 처리했고, 이분은 for 문 내에서 해결했다.

profile
I live in Seoul, Korea, Handsome
post-custom-banner

0개의 댓글