오늘의 문제
오늘의 해결한 문제는 다음과 같다.
요약하자면 여러 수가 담긴 배열과 골라야할 갯수 k 가 주어질때 주어진 배열에서 각 원소들의 합이 k보다 크거나 같도록 하는 문제이다.
문제를 풀기 위해 접근한 방식은 다음과 같다.
빈 Map객체를 생성한뒤 Map안에 주어진 배열을 순회돌면서 귤의숫자 => 갯수 의 형태로 담고
해당 맵을 배열로 정리시키는데 값들의 크기를 내림차순 정렬한다.
정리된 배열의 첫번째부터 누적해 더해가면서 k보다 커졌을때 answer를 반환한다.
function solution(k, tangerine) {
var answer = 0;
let map = new Map();
for(let i = 0; i < tangerine.length; i++) {
let key = String(tangerine[i]);
if(map.has(key)) {
map.set(key, map.get(key) + 1);
} else {
map.set(key, 1);
}
}
let sortedEntries = [...map.entries()].sort((a, b) => b[1] - a[1]);
let temp = 0;
for(let i = 0 ; i < sortedEntries.length ; i++){
temp += parseInt(sortedEntries[i][1]) ;
answer = i+1;
if(temp >= k){break;}
}
return answer;
}
꽤나 복잡하지만 직관적으로 작성했다. 아마 코드를 줄이려면 더 줄일 수 있을 듯 하지만 가독성에는 이 방식이 더 좋은듯하다.
'TIL' 카테고리의 다른 글
[TIL] 2024-02-27 nodemailer 이슈 (1) | 2024.02.28 |
---|---|
[TIL] 2024-02-26 jest 이슈 (0) | 2024.02.27 |
[TIL] 2024-02-20 3계층 아키텍처 개념 정리 (0) | 2024.02.22 |
[TIL] 2024-02-20 jest 단위테스트 (0) | 2024.02.21 |
[TIL] 2024-02-20 3계층 아키텍처 (0) | 2024.02.21 |