Jieunny์ ๋ธ๋ก๊ทธ
[JS] ํ๋ก๊ทธ๋๋จธ์ค - ๊ทค ๊ณ ๋ฅด๊ธฐ ๋ณธ๋ฌธ
๐ ๋ฌธ์
๊ฒฝํ๋ ๊ณผ์์์์ ๊ทค์ ์ํํ์ต๋๋ค. ๊ฒฝํ๋ ์ํํ ๊ทค ์ค '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;
}
'Study > Coding Test' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[JS] ํ๋ก๊ทธ๋๋จธ์ค - n^2 ๋ฐฐ์ด ์๋ฅด๊ธฐ (0) | 2023.02.28 |
---|---|
[JS] ํ๋ก๊ทธ๋๋จธ์ค - ํํ (0) | 2023.02.28 |
[JS] ํ๋ก๊ทธ๋๋จธ์ค - ์์ฅ (0) | 2023.02.27 |
[JS] ํ๋ก๊ทธ๋๋จธ์ค - ํ๋ ฌ์ ๊ณฑ์ (0) | 2023.02.27 |
[JS] ํ๋ก๊ทธ๋๋จธ์ค - ์บ์(LRU ์๊ณ ๋ฆฌ์ฆ) (0) | 2023.02.24 |