| 문제 | 레벨 | 정답률 |
|---|---|---|
| 체육복 | Lv.1 | 57% |

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]){
reserve[j] = -1;
lost[i] = -1;
answer++;
break;
}
}
}
//체육복 빌려주기
for(int i = 0; i<lost.length; i++){
if(lost[i] == -1){continue;}
for(int j = 0; j<reserve.length; j++){
if(reserve[j] == -1){continue;}
if(lost[i] - 1 == reserve[j] || lost[i] + 1 == reserve[j]){
answer++;
reserve[j] = -1;
break;
}
}
}
return answer;
}
}
처음에 실행했을 때 2개의 테스트에서 fail이 떠서 이유를 찾아보니 처음에 배열을 정렬하지 않았는데 정렬했다는 가정하에 문제를 풀었기 때문이었다.
정렬이 되어 있지 않다면 원하는대로 최대학생의 수가 출력되지 않을 수 있기 때문,,