본문 바로가기

프로그래머스/해시

[해시] 프로그래머스 '귤 고르기' - js

반응형

1. 문제

https://school.programmers.co.kr/learn/courses/30/lessons/138476#qna

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

2. 설명

이 문제는 해시의 개념을 잘 알고 있으면 쉽게 풀 수 있다. 값들이 특정 분류로 나뉜다?! 그럼 바로 해시 맵!

또 하나의 포인트는 해시 맵의 정렬이다. 이 문제에서는 value값이 큰 요소 순으로 정렬을 해서 종류 별 귤 갯수가 많은 순으로 선택을 해나가기 때문이다.

해시 정렬 방법
1. 스프레드 syntax를 사용해 배열로 만들어준다(이차원 배열이 됨).
2. 원하는 기준대로 정렬한다.
function solution(k, tangerine) {
    let map = new Map();
    
    for(let i=0;i<tangerine.length;i++){
        map.set(tangerine[i], (map.get(tangerine[i]) || 0) + 1);
    }
    const arr = [...map].sort((a,b) => b[1]-a[1]);
    let temp = 0, i = 0;
    while(temp < k){
      if(arr[i][1] >= k) return i+1;
      if(temp < k){
        temp += arr[i][1];
        i++;
      }
    }
    
    return i;
}

 

해시 맵 정렬 개념 참고한 블로그)

https://nukw0n-dev.tistory.com/13

 

[Javascript] 자바스크립트 Map 정렬하기

잡소리, 서론 코딩테스트 응시언어가 js로 제한되어있는 곳에 지원했다. 자바스크립트와 친숙했던 나지만 자바스크립트로 알고리즘 문제들을 풀어본 적이 없어서 이것저것 찾아보면서 공부하

nukw0n-dev.tistory.com

 

반응형