3은로그

프로그래머스-코딩테스트 연습(그리디-체육복) 본문

코딩테스트

프로그래머스-코딩테스트 연습(그리디-체육복)

3은 2022. 10. 4. 19:03
728x90

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

import java.util.Arrays;
class Solution {
    public int solution(int n, int[] lost, int[] reserve) {
        int answer = 0;
        
        //배열을 오름차순으로 정렬
        Arrays.sort(reserve);
        Arrays.sort(lost);	

        
        //체육수업을 들을 수 있는 학생 수(전제 학생수 - 체육복을 잃어버린 학생수)
        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]){
                    answer++;
                    lost[i] = -1;
                    reserve[j] = -1;
                }
            }
        }

		
        //reserve와 lost가 1이 차이나면 체육복을 빌려줄 수 있다.
        for(int i = 0; i < reserve.length; i++){
            for(int j = 0; j < lost.length; j++){
                if(reserve[i] != -1 && lost[j] != -1){
                    if(reserve[i] - lost[j] == 1 || reserve[i] - lost[j] == -1) {
                        answer++;
                        lost[j] = -1;
                        reserve[i] = -1;
                    }
                }
            }
        }
        return answer;
    }
}