Jieunny์˜ ๋ธ”๋กœ๊ทธ

[JS] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค - ๊ทค ๊ณ ๋ฅด๊ธฐ ๋ณธ๋ฌธ

Study/Coding Test

[JS] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค - ๊ทค ๊ณ ๋ฅด๊ธฐ

Jieunny 2023. 2. 28. 09:22

๐Ÿ“Œ  ๋ฌธ์ œ

๊ฒฝํ™”๋Š” ๊ณผ์ˆ˜์›์—์„œ ๊ทค์„ ์ˆ˜ํ™•ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ฒฝํ™”๋Š” ์ˆ˜ํ™•ํ•œ ๊ทค ์ค‘ 'k'๊ฐœ๋ฅผ ๊ณจ๋ผ ์ƒ์ž ํ•˜๋‚˜์— ๋‹ด์•„ ํŒ๋งคํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ์ˆ˜ํ™•ํ•œ ๊ทค์˜ ํฌ๊ธฐ๊ฐ€ ์ผ์ •ํ•˜์ง€ ์•Š์•„ ๋ณด๊ธฐ์— ์ข‹์ง€ ์•Š๋‹ค๊ณ  ์ƒ๊ฐํ•œ ๊ฒฝํ™”๋Š” ๊ทค์„ ํฌ๊ธฐ๋ณ„๋กœ ๋ถ„๋ฅ˜ํ–ˆ์„ ๋•Œ ์„œ๋กœ ๋‹ค๋ฅธ ์ข…๋ฅ˜์˜ ์ˆ˜๋ฅผ ์ตœ์†Œํ™”ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, ๊ฒฝํ™”๊ฐ€ ์ˆ˜ํ™•ํ•œ ๊ทค 8๊ฐœ์˜ ํฌ๊ธฐ๊ฐ€ [1, 3, 2, 5, 4, 5, 2, 3] ์ด๋ผ๊ณ  ํ•ฉ์‹œ๋‹ค. ๊ฒฝํ™”๊ฐ€ ๊ทค 6๊ฐœ๋ฅผ ํŒ๋งคํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด, ํฌ๊ธฐ๊ฐ€ 1, 4์ธ ๊ทค์„ ์ œ์™ธํ•œ ์—ฌ์„ฏ ๊ฐœ์˜ ๊ทค์„ ์ƒ์ž์— ๋‹ด์œผ๋ฉด, ๊ทค์˜ ํฌ๊ธฐ์˜ ์ข…๋ฅ˜๊ฐ€ 2, 3, 5๋กœ ์ด 3๊ฐ€์ง€๊ฐ€ ๋˜๋ฉฐ ์ด๋•Œ๊ฐ€ ์„œ๋กœ ๋‹ค๋ฅธ ์ข…๋ฅ˜๊ฐ€ ์ตœ์†Œ์ผ ๋•Œ์ž…๋‹ˆ๋‹ค.

๊ฒฝํ™”๊ฐ€ ํ•œ ์ƒ์ž์— ๋‹ด์œผ๋ ค๋Š” ๊ทค์˜ ๊ฐœ์ˆ˜ k์™€ ๊ทค์˜ ํฌ๊ธฐ๋ฅผ ๋‹ด์€ ๋ฐฐ์—ด tangerine์ด ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์ง‘๋‹ˆ๋‹ค. ๊ฒฝํ™”๊ฐ€ ๊ทค k๊ฐœ๋ฅผ ๊ณ ๋ฅผ ๋•Œ ํฌ๊ธฐ๊ฐ€ ์„œ๋กœ ๋‹ค๋ฅธ ์ข…๋ฅ˜์˜ ์ˆ˜์˜ ์ตœ์†Ÿ๊ฐ’์„ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”.


์ œํ•œ์‚ฌํ•ญ

  • 1 ≤ k  tangerine์˜ ๊ธธ์ด ≤ 100,000
  • 1 ≤ tangerine์˜ ์›์†Œ ≤ 10,000,000

 

๐Ÿ’ก  ์•„์ด๋””์–ด

์ผ๋‹จ ์ข…๋ฅ˜๋ณ„๋กœ ๋ช‡๊ฐœ์žˆ๋Š”์ง€ ๋‹ด์„ ๋ฐฐ์—ด์„ ์ƒ์„ฑํ•ด์„œ, ์ข…๋ฅ˜=์ธ๋ฑ์Šค๋ผ๊ณ  ํ•˜๊ณ  ๊ฐœ์ˆ˜๋ฅผ ์ €์žฅํ•œ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ๊ทธ ๋ฐฐ์—ด์„ ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•œ๋‹ค(ํฐ ์ˆ˜๋ถ€ํ„ฐ ํ•ด์•ผ ์ ์€ ์ข…๋ฅ˜์˜ ๊ทค์„ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ)
๊ทธ ๋ฐฐ์—ด์„ ๋Œ๋ฉด์„œ k๋ณด๋‹ค ๊ฐ™๊ฑฐ๋‚˜ ์ปค์ง€๋ฉด ๋ฉˆ์ถ˜๋‹ค.

๋ฐฐ์—ด์„ ๋Œ ๋•Œ๋งˆ๋‹ค answer์„ ++ํ•ด์ค€๋‹ค.

 

โœ๏ธ  ํ’€์ด

function solution(k, tangerine) {
    var answer = 0;
    let count = [];
    let sum = 0;

    for(let i=0; i<tangerine.length; i++){
     if(count[tangerine[i]] === undefined) count[tangerine[i]] = 1;
     else count[tangerine[i]]++;
    }

    count.sort((a, b) => b - a);
    
    for(let i of count){
      sum += i;
      answer ++;
      if(sum >= k) break;
    }

    return answer;
}