[lv2] 귤 고르기

걸음걸음·2023년 2월 27일
0

Test

목록 보기
11/29

문제 링크

  • 상자에 담겨야 하는 귤의 수 k, 귤의 크기를 담은 배열 tangerine
  • 서로 다른 종류를 최소화 했을 때, 귤의 종류 수 return
function solution(k, tangerine) {
    const category = {}
    // tangerine에 담긴 귤을 크기:수 형태로 객체화
    tangerine.forEach((ele)=>{
        return category[ele] ? category[ele] += 1 : category[ele] = 1
    })
  	// category의 value값(수)만 추출하여 배열화, 내림차순 정렬
    const kind = Object.values(category).sort((a,b)=>b-a);
    let result = 0;
  	// k가 0 혹은 그보다 작은 값이 될 때까지(=상자를 다 채울 때까지) 배열에서 제거 및 종류 수 올리기
    while(k>0){
        result++;
        k -= kind.shift();
        if(k <= 0){
            return result;
        }
    }
}

처음에 서로 다른 종류를 최소화 하라는 말을 크기의 최솟값과 최댓값이 가장 적은 경우를 구하라는 말로 이해해서 슬라이딩 알고리즘을 적용해서 풀었다가 채점으로 모조리 틀리는걸 보고 다시 풀었다.
문제 이해 제대로 하기.

Object to Array

Object.keys()

객체의 키를 배열로 변환

const obj = {
  key1:value1,
  key2:value2,
  key3:value3
}
const arr = Object.keys(obj);

Object.values()

객체의 value를 배열로 반환

const obj = {
  key1:value1,
  key2:value2,
  key3:value3
}
const arr = Object.values(obj);

Object.entries()

객체의 키와 값을 [키,값] 형식으로 배열로 반환

const obj = {
  key1:value1,
  key2:value2,
  key3:value3
}
const arr = Object.entries(obj);
// [[key1, value1], [key2, value2], [key3, value3]]

객체의 속성에 접근해 배열에 push

const obj = {
  key1:value1,
  key2:value2,
  key3:value3
}
let arr = []
for (let key in obj) {
  if(obj.hasOwnProperty(key)) {
    arr.push(key);
  }
}
profile
꾸준히 나아가는 개발자입니다.

0개의 댓글