[ TIL 41 ] Code-kata day-8

_dodo_heeยท2021๋…„ 4์›” 25์ผ
0

ALGORITHM

๋ชฉ๋ก ๋ณด๊ธฐ
7/8
post-thumbnail

Code Kata ๋ฌธ์ œ ๐Ÿ“œ

nums๋Š” ์ˆซ์ž๋กœ ์ด๋ฃจ์–ด์ง„ ๋ฐฐ์—ด์ž…๋‹ˆ๋‹ค.
๊ฐ€์žฅ ์ž์ฃผ ๋“ฑ์žฅํ•œ ์ˆซ์ž๋ฅผ k ๊ฐœ์ˆ˜๋งŒํผ returnํ•ด์ฃผ์„ธ์š”.
nums = [1,1,1,2,2,3], k = 2

Code Kata ์ฒซ๋ฒˆ์งธ ์‹œ๋„ ๐Ÿ’ก

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 ]

์ฒซ๋ฒˆ์งธ ์‹œ๋„ review โœ๏ธ

๋นˆ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค๊ณ 
ํŠน์ • ๊ฐ’์„ ๊ฐ€์ง„ ํ‚ค๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด 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์„ ์‚ฌ์šฉํ•ด์„œ ์ƒˆ๋กœ์šด ๋ฐฐ์—ด๋กœ ๋ฐ˜ํ™˜ํ•œ๋‹ค.


์ƒˆ๋กœ์šด ์•Œ๊ฒŒ ๋œ ๋ฉ”์„œ๋“œ ๐Ÿ“Œ

๋‚ด๊ฐ€ ์ด๋ฒˆ ๋ฌธ์ œ๋ฅผ ํ’€๋ฉด์„œ ์•Œ๊ฒŒ๋œ ๋ฉ”์„œ๋“œ์˜ ๋Œ€ํ•ด ์†Œ๊ฐœํ•˜๊ฒ ๋‹ค. (์•„์ฃผ ๊ฐ„๋‹จํžˆ)

for in

๊ฐ์ฒด์—์„œ ๋ฌธ์ž์—ด๋กœ ํ‚ค๊ฐ€ ์ง€์ •๋œ ๋ชจ๋“  ์—ด๊ฑฐ ๊ฐ€๋Šฅํ•œ ์†์„ฑ์— ๋Œ€ํ•ด ๋ฐ˜๋ณต

slice

์–ด๋–ค ๋ฐฐ์—ด์˜ begin๋ถ€ํ„ฐ end๊นŒ์ง€(end ๋ฏธํฌํ•จ)์— ๋Œ€ํ•œ ์–•์€ ๋ณต์‚ฌ๋ณธ์„ ์ƒˆ๋กœ์šด ๋ฐฐ์—ด ๊ฐ์ฒด๋กœ ๋ฐ˜ํ™˜

parseint

๋ฌธ์ž๋ฅผ ์ •์ˆ˜๋กœ ๋ณ€ํ™˜

map

๋ชจ๋“  ์š”์†Œ ๊ฐ๊ฐ์— ๋Œ€ํ•˜์—ฌ ์ฃผ์–ด์ง„ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•œ ๊ฒฐ๊ณผ๋ฅผ ๋ชจ์•„ ์ƒˆ๋กœ์šด ๋ฐฐ์—ด์„ ๋ฐ˜ํ™˜

profile
๋ฌด๋Ÿญ๋ฌด๋Ÿญ ์ž๋ผ๋‚˜๋Š” ๋„๋„ ๊ฐœ๋ฐœ์„ฑ์žฅ์ผ๊ธฐ

0๊ฐœ์˜ ๋Œ“๊ธ€