반응형
https://programmers.co.kr/learn/courses/30/lessons/42862?language=javascript
예전에 통과하지 못하고 다른 사람의 풀이를 보았던 문제이다.
지금이라면 풀 수 있을까 하여 다시 풀어보았고,
통과하였다!
function solution(n, lost, reserve) {
const lostFilterdAndSorted = lost.filter(number => !reserve.includes(number)).sort();
const reserveFilteredAndSorted = reserve.filter(number => !lost.includes(number)).sort();
let answer;
for (let i = 0; i < lostFilterdAndSorted.length; i++) {
for (let j = 0; j < reserveFilteredAndSorted.length; j++) {
if (Math.abs(lostFilterdAndSorted[i] - reserveFilteredAndSorted[j]) === 1) {
lostFilterdAndSorted.splice(i, 1);
reserveFilteredAndSorted.splice(j, 1);
i -= 1;
break;
}
}
if (!reserveFilteredAndSorted.length) {
break;
}
}
return answer = n - lostFilterdAndSorted.length;
}
먼저 lost와 reserve 리스트에 모두 포함되어 있는 요소를 filter로 없앴다.
그리고 sort하여 크기 순으로 나열했고,
반복문을 활용하여 값의 차이가 1인 경우 리스트에서 제거하는 식이다.
reserve의 길이가 0일 때 lost를 순회하지 않도록 하여 리소스 낭비를 하지 않도록 했다.
반복문이 끝나면 answer에 총 인원 n에서 lost의 길이를 빼주어 정답을 리턴했다.
반응형
'IT > Algorithm' 카테고리의 다른 글
프로그래머스) [1차] 다트 게임 (0) | 2021.10.06 |
---|---|
Merge sort (0) | 2021.10.02 |
프로그래머스) 최소 직사각형 (0) | 2021.10.01 |
프로그래머스) 숫자 문자열과 영단어 (0) | 2021.10.01 |
Space Complexity - 공간 복잡도 (0) | 2021.10.01 |