[프로그래머스 lev2/JS] 귤 고르기

woolee의 기록보관소·2022년 11월 26일
0

알고리즘 문제풀이

목록 보기
109/178

문제 출처

프로그래머스 lev2 - 귤 고르기

나의 풀이 (통과)

귤 종류를 최소화하려면 개수가 많은 귤부터 채워넣으면 된다. 각 종류별 개수 형태로 데이터를 분류하면 된다.

tcnt ⇒ 객체에 귤의 개수 정보를 저장한다.
val ⇒ 귤 개수를 배열로 만들고, 내림차순 정렬한다. val에는 귤 개수가 가장 많은 종류부터 배치된다.

for문을 순회하면서 k값에서 빼주고 k<=0 되는 시점에 break 해준다.

function solution(k, tangerine) {
  const tcnt = {};
  for(let i=0; i<tangerine.length; i++) {
    if (tcnt[tangerine[i]]) tcnt[tangerine[i]]++;
    else tcnt[tangerine[i]]=1;
  }

  let val = Object.values(tcnt).sort((a,b) => b-a);

  let i;
  for (i=0; i<val.length; i++) {
    k = k - val[i];
    if (k<=0) break;
  }

  return i+1;
}

console.log(solution(6, [1, 3, 2, 5, 4, 5, 2, 3]));

다른 풀이

function solution(k, tangerine) {
  let answer = 0;
  const tDict = {};
  tangerine.forEach((t) => tDict[t] = (tDict[t] || 0) + 1);
  const tArr = Object.values(tDict).sort((a, b) => b - a);
  for (const t of tArr) {
    answer++;
    if (k > t) k -= t;
    else break;
  }
  return answer;
}
profile
https://medium.com/@wooleejaan

0개의 댓글