호지

[프로그래머스] 귤 고르기 문제풀이 JS 본문

알고리즘/프로그래머스

[프로그래머스] 귤 고르기 문제풀이 JS

_hoji

우선 전체 tangerine에서 각각 귤 크기 별로 몇개 있는지 구하는 것이 먼저이다.

이를 위해선 자료구조 map이나 객체를 사용할 수 있는데,

이번 풀이에선 map을 사용했다.

tangerine 전체를 순회하면서, map에 해당 크기가 있으면 기존 값을 1 증가를,

해당 크기가 없다면 해당값을 1로 저장한다.

 

귤 크기 별로 몇개 있는지 다 구했다면,

많은 개수가 있는 귤 먼저 뽑게 되면, 서로 다른 종류의 귤을 최소화할 수 있으므로

map을 sort한다.

(*map자료구조는 spread연산으로 배열화 시킨 후, 개수를 기준으로 내림차순 정렬)

 

이후 정렬된 count 배열에서 앞 index부터 순차적으로 탐색을 하며,

k값보다 해당 index값이 크거나 같으면 해당 index+1를 return하고,

그 외엔 k값에 해당 index값을 뺀다.

function solution(k, tangerine) {
  let map = new Map()
  for (const t of tangerine) {
    map.set(t, map.get(t) ? map.get(t) + 1 : 1)
  }
  let count = [...map]
  count.sort((a, b) => b[1] - a[1])
  for (let i = 0; i < count.length; i++) {
    if (k <= count[i][1]) {
      return i + 1
    }
    k -= count[i][1]
  }
}

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

 

프로그래머스

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

programmers.co.kr

 

Comments