- 잃어버린 학생 배열과 여분의 옷을 가진 학생 배열을 정렬한다.
- 여벌의 체육복을 가져온 학생이 도난당한 경우를 생각해서 처리한다.
- 잃어버린 사람에게 체육복을 빌려 줄 때 앞 뒤 번호만 빌려줄 수 있도록 처리한다.
/*
* 프로그래머스 Lv1 - 체육복
* 문제링크: https://programmers.co.kr/learn/courses/30/lessons/42862
* 정확성 테스트 케이스 20개 중 20개 성공
* 총점 100.0
*/
import java.util.*;
class Solution {
public int solution(int n, int[] lost, int[] reserve) {
int answer = n-lost.length;
Arrays.sort(lost);
Arrays.sort(reserve);
// 여벌의 체육복을 가져온 학생이 도난당한 경우
for(int i=0; i<lost.length; i++){
for(int j=0; j<reserve.length; j++){
// 자기 자신이 포함되는지 체크
if(lost[i] == reserve[j]){
answer++; // 자신의 옷을 입으므로 answer 증가
lost[i] = -1;
reserve[j] = -1;
break;
}
}
}
// 도난당한 학생에게 체육복 빌려주는 경우
for(int i=0; i<lost.length; i++){
for(int j=0; j<reserve.length; j++){
// 잃어버린 사람의 앞 뒤 번호만 빌려줄 수 있음
if((lost[i]-1 == reserve[j]) || (lost[i]+1 == reserve[j])){
answer++;
reserve[j] = -1;
break;
}
}
}
return answer;
}
}
초반에는 순조롭게 풀고 있다고 생각을 했는데 여벌의 체육복을 가져온 학생이 도난당한 경우를 생각하지 못해서 쉽게 해결하지 못했다. 그 부분을 생각해서 그래도 후에 해결할 수 있었던 것 같다.