개발공부/코딩테스트 연습문제
[프로그래머스] 체육복
ku-na
2022. 1. 6. 15:13
문제 설명과 제한사항

풀이
import java.util.Arrays;
class Solution {
public int solution(int n, int[] lost, int[] reserve) {
int loster = 0;
int reserver = 0;
int count = n - lost.length;
Arrays.sort(lost);
Arrays.sort(reserve);
while(lost.length > loster && reserve.length > reserver){
if(lost[loster] < reserve[reserver]){
if(lost[loster] + 1 == reserve[reserver]){
loster++;
reserver++;
count++;
}
else{
loster++;
}
}
else if(lost[loster] > reserve[reserver]){
if(lost[loster] - 1 == reserve[reserver]){
loster++;
reserver++;
count++;
}
else{
reserver++;
}
}
else if(lost[loster] == reserve[reserver]){
loster++;
reserver++;
count++;
}
}
return count;
}
}
++
결과 먼저 작성하면
테스트코드 5번 테스트코드 12번 실패다.
우선 처음 봤을때 생각한 건 배열에 담아서 초기화 하고 체육 가능한 학생들만 표시하는
방법을 생각 했다.
그리고 다른 사람의 풀이를 먼저 봤는데, 그 방법이 있어서
정렬로 한번 해볼까? 라는 생각을 했다.
오름차순으로 정렬하고 하나 하나 비교하면서 체육복을 빌린 인원을 카운트
전체 - 도둑맞은인원 + 빌린 인원
여기서 간과했던건 여벌이 있는 학생도 도둑맞았을 경우.
그래서 해당 케이스도 포함했는데,,, 이해를 못해서 1차적으로 포기했다.
다른방법으로 풀 수 있는데 귀찮았다.