참치코더의 꿈 메모장

Javascript / 프로그래머스 - 귤 고르기 본문

Javascript

Javascript / 프로그래머스 - 귤 고르기

참치깡 2026. 2. 19. 18:08
728x90

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
function solution(k, tangerine) {
    var answer = 0;
 
    const freqMap = new Map();
 
    for (const item of tangerine){
        freqMap.set(item, (freqMap.get(item) || 0+ 1)
    }
 
    // 배열 변환 후 내림차순 정렬 [2,2,2,1,1]
    const counts = [...freqMap.values()].sort((a, b) => b - a);
 
    let remaining = k;
    for(const count of counts){
        remaining -= count;
        answer++;
        if(remaining <= 0break;
    }
return answer;
}
cs

 

- 경화가 한 상자에 담으려는 귤의 개수 k와 귤의 크기를 담은 배열 tangerine이 매개변수로 주어진다고

  할때 경화가 귤 k개를 고를 때 크기가 서로 다른 종류의 수의 최솟값을 return 하도록 solution 함수를

  작성하는 문제이다.

 

- 일단 Map을 선언하여 해당 귤의 종류의 분포도를 확인하려고 했다. 각각 귤의 크기별로 개수를 세었을때

  많은 분포를 가진 귤부터 선별해 상자를 채운다면 서로 다른 종류의 수의 최솟값을 구할 수 있기 때문이다.

 

- for문으로 tangerine의 개수를 받아 새로 생성한 맵에 각 귤의 크기를 키값으로 주고, value값으로 

  만약 해당 크기의 귤이 없다면 0을 생성 있다면 1을 더하도록 값을 작성했다.

 

- 이후 해당 map의 value만 뽑아 내림차순 정렬해여 배열을 만들어 주었고

 

- 한번더 for문을 돌려 remaining에서 귤을 선별하는 것으로 만들어 주었다. 만약 귤이 담겼다면 해당 크기는

  다 담긴것이므로 그것만큼 answer 에 카운트를 해주었고 조건문을 주어 remaining에 자리가 없다면 

  최솟값을 구한것 이므로 break를 해주어 answer를 반환한다.

 

- 이렇게 하면 정답을 구할 수 있다. ^^

 

실행 결과 부분 발췌

 

728x90
Comments