[Programmers] 그리디 - 체육복
문제
풀이
코드제출 시 5번과 12번이 실패로 떠서 문제에 제시된 제한사항과 다른 분들의 힌트를 보고 문제점을 알기까지 애를 먹었다.
체육복을 도난당한 학생이 여유분의 체육복을 가진 경우를 완벽하게 잡아내지 못했던 것 같다.
그래서 테스트케이스 1건을 추가했다.
solution(5, [2,3], [3,4])
lost와 reserve에 중복으로 존재하는 학생이 있을 경우에는 배열에 임의의 수 -99를 넣어 후에 체육복을 분배 시 제외하도록 하였더니 통과하였다...
채점결과에 실패한 테스트케이스를 알 수가 없어 갈피잡는데 오랜 시간이 걸린 것 같다...
제출답안
import java.util.*;
class Solution {
public int solution(int n, int[] lost, int[] reserve) {
int answer = n - lost.length;
int[] boolArray = new int[reserve.length]; // 여분 체육복이 한사람에게만 갈 수 있도록
//정렬이 안되어있을경우
Arrays.sort(lost);
Arrays.sort(reserve);
//도난당한 학생이 여벌의 체육복을 가져온 학생인 경우
for(int i=0; i<reserve.length; i++){
for(int j=0; j<lost.length; j++){
if(lost[j] == -99 && reserve[i] == -99){
continue;
}
if(lost[j] == reserve[i]){
lost[j] = -99;
reserve[i] = -99;
answer++;
}
}
}
//중복제거 후 체육복 분배 및 체육수업에 참가할 수 있는 학생 수 카운트
for(int i=0; i<lost.length; i++){
for(int j=0; j<reserve.length; j++){
if(boolArray[j] == 0){
if(lost[i] == reserve[j]+1 || lost[i] == reserve[j]-1){
answer++;
boolArray[j] = 1;
break;
}
}
}
}
return answer;
}
}
출처
Author And Source
이 문제에 관하여([Programmers] 그리디 - 체육복), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@s2na/Programmers-그리디-체육복저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)