[LV 2] 귤 고르기

majungha·2023년 7월 19일
1

알고리즘

목록 보기
64/71

📝 [JavaScript] 귤 고르기


▷ 문제 설명

▷ 제한사항

▷ 입출력 예

solution(6,	[1, 3, 2, 5, 4, 5, 2, 3]) //	3
solution(4,	[1, 3, 2, 5, 4, 5, 2, 3]) //	2
solution(2,	[1, 1, 1, 1, 2, 2, 2, 3]) //	1

▷ 내 풀이

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

  const kind = Object.values(obj).sort((a, b) => b - a);

  let sum = 0;
  let answer = 0;

  for (let num of kind) {
    answer++;
    sum += num;

    if (sum >= k) break;
  }

  return answer;
}

▷ 접근 방식

  1. obj 객체에 {귤의 크기: 귤의 개수} 식으로 담아줌
  2. kind라는 배열에 obj의 value값을 역순으로 정렬([2, 2, 2, 1, 1])
  3. sum, answer 변수 설정 후 for of문을 통해서 answer를 계속 1씩 더해주고, sum에는 kind의 0번째 인덱스부터 더해줌(2(2) -> 4(2+2) -> 6(2+2+2) -> ...)
  4. sum이 k와 같거나 더 커지면 for of문을 멈춰줌

출처: 프로그래머스

profile
개발자 블로그 / 항상 겸손한 자세로 배우면서 성장하자 할 수 있다!

1개의 댓글

comment-user-thumbnail
2023년 7월 19일

유익한 정보를 제공해주셔서 감사합니다.

답글 달기