귤 고르기, Javascript

cptkuk91·2023년 3월 2일
1

Algorithm

목록 보기
150/161

문제

https://school.programmers.co.kr/learn/courses/30/lessons/138476?language=javascript

코드

function solution(k, tangerine) {
    let result = 0;
    
    let tmp = {};
    
    for(let num of tangerine){
        if(num in tmp){
            tmp[num] += 1;
        } else {
            tmp[num] = 1;
        }
    }
    
    let tmpSort = Object.values(tmp).sort((a, b) => b - a);
    console.log(tmpSort);
    
    let count = 0;
    for(let i = 0; i < tmpSort.length; i++){
        if(count < k){
            count += tmpSort[i];
            result++;
        }
        if(count === k){
            break;
        }
    }
    
    return result;
}

풀이

우선 tmp 객체를 선언해 각 숫자별 갯수를 넣어줍니다.
각 숫자의 갯수를 구한 후, Object.values를 통해 값만 뽑아냅니다. 값을 뽑아내면서 sort((a, b) => b - a)를 통해 내림차순으로 정렬합니다. k값만큼 귤을 줄때 최대갯수에서 우선적으로 빼줘야 최소값을 구할 수 있습니다. k값과 비교할 count를 선언하고, count가 k보다 작다면 tmpSort[i]를 더해주고, result++을 통해 최소값을 추가합니다. 주의 사항으로 if(count === k) 상황에서 break를 해줘야 합니다. 미작성 시 if(count < k)에서 count가 한방에 k 이상으로 넘어가는 경우가 발생할 수 있습니다.

profile
메일은 매일 확인하고 있습니다. 궁금하신 부분이나 틀린 부분에 대한 지적사항이 있으시다면 언제든 편하게 연락 부탁드려요 :)

0개의 댓글