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

박지훈·2021년 2월 23일
0
post-custom-banner

문제

링크



풀이

  1. 현실적으로 수업에 들을 수 있는 학생 수 계산. (안전하게 수업을 들을 수 있는 학생 수를 계산한다는 의미이다!)

  2. lost 값을 기준으로 reserve 값과 같은 값이 있다면 lost, reserve 값을 -1로 변경. (-1로 변경하는 이유는 배열 요소를 삭제한다는 개념으로 생각하면 된다.)
    ( 주의사항 ) -1로 변경할 때 정답(수업을 들을 수 있는 학생 수)에 1명을 추가해야한다!! 왜냐하면 이 경우에는 학생에게 체육복은 빌려줄 수 없으나 수업은 들을 수 있는 경우이기 때문이다.

  3. lost 값에서 -1, +1 한 결과가 reserve에 존재하는지 확인. 만약 있다면 정답에 1명 추가.
    ( 주의사항 ) -1 연산부터 수행해야한다. --> 작은값부터 탐색해야 여벌 체육복이 남지 않도록 체육복을 빌려줄 수 있기 때문이다.

풀이방법은 잘 생각하였으나 break문, 중간에 오류로 인해 시간을 많이 잡아먹었다... 많은 문제풀이만이 살 길이라고 생각합니다..ㅠㅠ



코드

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

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

        for (int i = 0; i < lost.length; i++) {
            for (int j = 0; j < reserve.length; j++) {
                if (lost[i] - 1 == reserve[j]) {
                    reserve[j] = -1;
                    answer++;
                    break;
                } else if (lost[i] + 1 == reserve[j]) {
                    reserve[j] = -1;
                    answer++;
                    break;
                }
            }
        }

        return answer;
    }
}
profile
Computer Science!!
post-custom-banner

0개의 댓글