코딩테스트
[코딩테스트] 프로그래머스 체육복 with javascript
hanbindev
2021. 5. 6. 17:30
문제 풀이 코드
function solution(n, lost, reserve) {
var answer = 0;
var duplicatedStudent = []
for (var i = 0; i < lost.length; i++){
if (reserve.includes(lost[i])){
duplicatedStudent.push(lost[i]); // #1
}
}
for (var student of duplicatedStudent){
var reserveIdx = reserve.indexOf(student); // #2
reserve.splice(reserveIdx,1);
var lostIdx = lost.indexOf(student);
lost.splice(lostIdx,1);
}
answer = n - lost.length; // #3
for (var lostedStudent of lost){
var canReserve = false;
for (var i of [-1,1]){
if (reserve.includes(lostedStudent + i)){ // #4
const idx = reserve.indexOf(lostedStudent + i);
reserve.splice(idx,1);
answer += 1;
break;
}
}
}
return answer;
}
#1
체육복이 도난 당했으면서, 여분의 체육복이 있는 사람 리스트를 저장해 둔다.
#2
미리 저장해둔 체육복이 도난 당했으면서, 여분의 체육복이 있는 사람을 lost, reserve 에서 제거한다.
#3
체육 수업을 들을 수 있는 사람 = 총 인원 - 체육복 잃어버린 사람
으로 만들어두고 친구에게 빌린 사람을 하나씩 추가한다.
#4
앞 번호 뒷 번호를 검사하면서 여분의 체육복이 있는 사람에게 체육복을 빌린다.