nums๋ ์ซ์๋ก ์ด๋ฃจ์ด์ง ๋ฐฐ์ด์ ๋๋ค.
๊ฐ์ฅ ์์ฃผ ๋ฑ์ฅํ ์ซ์๋ฅผ k ๊ฐ์๋งํผ returnํด์ฃผ์ธ์.
nums = [1,1,1,2,2,3], k = 2
function topK(nums, k) {
let obj = {}
for (let i in nums) {
nums[i] in obj ? obj[nums[i]] += 1 : obj[nums[i]] = 1
} // { '2': 1, '3': 1, '4': 4 }
let sorted = Object.keys(obj).sort(function(a, b) {
return obj[b] - obj[a] //[ '4', '2', '3' ]
})
//k๊ฐ ๋งํผ ๋ฆฌํด
return sorted.slice(0,k).map(x => parseInt(x))
}
console.log(topK([4,4,4,2,4,3],2)); //[ 4, 2 ]
๋น๊ฐ์ฒด๋ฅผ ๋ง๋ค๊ณ
ํน์ ๊ฐ์ ๊ฐ์ง ํค๊ฐ ์๋์ง ํ์ธํ๊ธฐ ์ํด nums์ i๋ผ๋ ๋ณ์๋ฅผ ๋ฃ์ด ๋ฐ๋ณต์ํจ๋ค.
๊ฐ์ฒด ์์ nums๋ฐฐ์ด i ์ธ๋ฑ์ค๊ฐ ์๋?
i=0 0๋ฒ์งธ ์ธ๋ฑ์ค๋ 1 1์ด ์์ผ๋ฉด 1 ์ฆ๊ฐ ์๋๋ฉด 1์ ์ง
๋ฐ๋ณต๋ฌธ์ ๋๋ฆฌ๋ค๋ณด๋ฉด
{'2': 1, '3': 1, '4': 4 }
์ด๋ฌํ ๊ฒฐ๊ณผ๊ฐ์ด ๋์จ๋ค.
sorted๋ผ๋ ๋ณ์๋ฅผ ์ง์ ํด์ ์์ ๋์จ ๊ฐ์ฒด์ ๊ฒฐ๊ณผ๊ฐ์ ์ ๋ ฌ์ํฌ ๋ด์ฉ์ ๋ด์์ค๋ค.
Object.keys(obj)
์ ์๋ค ์์๋ฅผ ๋น๊ตํด์ 0๋ณด๋ค ์์ผ๋ฉด +1 ์์๋๋ก ์ ๋ ฌ์ํจ๋ค.
sort๋ฅผ ์ฌ์ฉํ๋ฉด ๋ฐฐ์ด๋ก ๋ฆฌํด๋๊ธฐ ๋๋ฌธ์ [ '4', '2', '3' ]
๊ฒฐ๊ณผ๊ฐ์ด ๋์จ๋ค.
k์ ์ธ์๊ฐ์ ๊ฐฏ์๋งํผ ์ถ๋ ฅํ๊ธฐ์ํด slice๋ฅผ ํด์ฃผ๊ณ ,
sorted๋ฅผ 0๋ฒ์งธ ์ธ๋ฑ์ค๋ถํฐ k์ ์ธ์๊ฐ๊น์ง ์๋ผ์ค๋ค.
parseint๋ฅผ ์ฌ์ฉํด์ ๋ฌธ์์ด์ ์ ์๋ก ๋ณํํ๊ณ map์ ์ฌ์ฉํด์ ์๋ก์ด ๋ฐฐ์ด๋ก ๋ฐํํ๋ค.
๋ด๊ฐ ์ด๋ฒ ๋ฌธ์ ๋ฅผ ํ๋ฉด์ ์๊ฒ๋ ๋ฉ์๋์ ๋ํด ์๊ฐํ๊ฒ ๋ค. (์์ฃผ ๊ฐ๋จํ)
๊ฐ์ฒด์์ ๋ฌธ์์ด๋ก ํค๊ฐ ์ง์ ๋ ๋ชจ๋ ์ด๊ฑฐ ๊ฐ๋ฅํ ์์ฑ์ ๋ํด ๋ฐ๋ณต
์ด๋ค ๋ฐฐ์ด์ begin๋ถํฐ end๊น์ง(end ๋ฏธํฌํจ)์ ๋ํ ์์ ๋ณต์ฌ๋ณธ์ ์๋ก์ด ๋ฐฐ์ด ๊ฐ์ฒด๋ก ๋ฐํ
๋ฌธ์๋ฅผ ์ ์๋ก ๋ณํ
๋ชจ๋ ์์ ๊ฐ๊ฐ์ ๋ํ์ฌ ์ฃผ์ด์ง ํจ์๋ฅผ ํธ์ถํ ๊ฒฐ๊ณผ๋ฅผ ๋ชจ์ ์๋ก์ด ๋ฐฐ์ด์ ๋ฐํ