프로그래머스 LEVEL 2(귤 고르기)

image

  • 사용 언어 : javascript

  • 해결 날짜 : 2022-11-26

  • 해결 방법 :
    • tangerine를 돌며 종류 별 개수를 map에 저장
    • map에서 필요한 개수만 추출 후 내림차순 정렬(numbers)
    • 정렬된 numbers 배열을 돌며 현재(temp) k보다 적게 포장한 경우
      • 개수(answer) 1 증가
      • temp를 현재 크기의 귤의 개수만큼 더함
  • 회고 :
    • map에서 저장된 {크기: 개수} 쌍에서 추출할 때 필요한 값만 추출하기(개수)
  • 코드

    function solution(k, tangerine) {
        let temp = 0;
        let answer = 0;
        const map = new Map();
            
        for (let i = 0; i < tangerine.length; i++) {
            const current = tangerine[i];
                
            if (map.has(current)) {
                map.set(current, map.get(current) + 1);
            } else {
                map.set(current, 1);
            }
        }
            
        const numbers = [...map].map((val) => val[1]).sort((a, b) => b - a);
            
        for (const number of numbers) {
            if (temp < k) {
                answer += 1;
                temp += number;
            } else break;
        }
            
        return answer;
    }
    
  • 출처: 프로그래머스 코딩 테스트 연습, https://school.programmers.co.kr/learn/challenges