풀이) nums=[1,1,1,2,2,3,3,3] 으로 가정
function topK(nums, k) {
// 여기에 코드를 작성해주세요.
let obj = {}
for (let num of nums) {
if (!obj[num]) obj[num] = 0
obj[num]++
}
obj라는 빈 객체를 만들어 주고 거기에 nums 요소를 하나하나 넣으면서 중복되면 +1, 중복되지 않으면 0으로 만든다.
따라서 결과는
obj = { '1': 3, '2': 2, '3': 3 }
function topK(nums, k) {
// 여기에 코드를 작성해주세요.
let hash = {}
for (let num of nums) {
if (!hash[num]) hash[num] = 0
hash[num]++
}const hashToArray = Object.entries(obj)
const sortedArray = hashToArray.sort((a,b) => b[1] - a[1])
function topKFrequent(nums, k) {
let hash = {}
for (let num of nums) {
if (!hash[num]) hash[num] = 0
hash[num]++
}
const hashToArray = Object.entries(hash)
const sortedArray = hashToArray.sort((a,b) => b[1] - a[1])
const sortedElements = sortedArray.map(num => parseInt(num[0]))
return sortedElements.slice(0, k)
map함수로 num[0], 즉 객체의 value 요소만으로 이루어진 배열을 만들고 그 배열을 int로 바꿔주기 위해 parseInt를 쓴다.
-sortedElements = [1, 3, 2]
마지막으로 slice(0,k)로 0부터 k까지의 값들만 리턴되게 함
너무 어렵다.. 구글링(답안지) 없이 혼자 풀 수준까지 가려면 아직도 한참은 남은것 같다. 답안지를 봐도 해석하는데 시간을 쏟아 부어야하지만 주저 앉지말고 잘 하자.