[programmers]グリディ-スポーツウェア
1789 ワード
質問する
に答える
コードの提出時に5番と12番に失敗を表示し、質問で提示された制限事項と他の人の提示を見て、問題の所在を知りました.
体育服を盗まれた学生は十分な運動服を出せない.
そのため、テストケースが1つ追加されました.
solution(5, [2,3], [3,4])
もしlossとreserveに重複して存在する学生がいるならば、配列に任意の数の-99を加えて、その後運動服を割り当てる時を除いて、通過しました...
採点結果が失敗したケースが分からないので、頭を整理するのに長い時間がかかったようです...
回答の提出
Programmers
に答える
コードの提出時に5番と12番に失敗を表示し、質問で提示された制限事項と他の人の提示を見て、問題の所在を知りました.
体育服を盗まれた学生は十分な運動服を出せない.
そのため、テストケースが1つ追加されました.
solution(5, [2,3], [3,4])
もしlossと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;
}
}
ソースProgrammers
Reference
この問題について([programmers]グリディ-スポーツウェア), 我々は、より多くの情報をここで見つけました https://velog.io/@s2na/Programmers-그리디-체육복テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol