Daily/Today I Learned

22.11.30_TIL

ํ˜ธ๋ฐ€์ด 2022. 11. 30. 15:19

๐Ÿ“— ์˜ค๋Š˜ ํ•œ ์ผ

Javascript ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์Šคํ„ฐ๋”” ๋ฌธ์ œํ’€์ด

  • [Level1]๋ช…์˜ˆ์˜ ์ „๋‹น(1)
    • ์ž๋ฃŒ๊ตฌ์กฐ ์Šคํƒ์„ ์‚ฌ์šฉํ•˜์—ฌ ํ’€๋ฉด ์‰ฝ๊ฒŒ ํ’€๋ฆฌ๋Š” ๋ฌธ์ œ์˜€๋‹ค.
      ๋ช…์˜ˆ์˜ ์ „๋‹น์— k๋งŒํผ ์ˆ˜๊ฐ€ ์ฐจ๋Š”์ง€ ํ™•์ธํ•˜๊ณ , k๋งŒํผ ์ฐจ์ง€ ์•Š์•˜๋‹ค๋ฉด push๋กœ ์Šคํƒ์— ์ฑ„์›Œ์ฃผ๊ณ  Math.min์„ ์‚ฌ์šฉํ•˜์—ฌ ์Šคํƒ์— ๋‹ด๊ธด ์ •์ˆ˜์ค‘ ๊ฐ€์žฅ ๋‚ฎ์€ ์ ์ˆ˜๋ฅผ ์ถ”์ถœํ•˜๋ฉด ๋œ๋‹ค. k๋งŒํผ ๋ช…์˜ˆ์˜ ์ „๋‹น์ด ์ฐผ์„ ๊ฒฝ์šฐ ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•˜์—ฌ k-1๋ฒˆ์งธ์˜ ๊ฐ’์„ ๋ฝ‘์•„๋‚ด๋ฉด ๋ช…์˜ˆ์˜ ์ „๋‹น์— ์˜ฌ๋ผ๊ฐ„ ์ ์ˆ˜์ค‘ ๊ฐ€์žฅ ๋‚ฎ์€ ์ ์ˆ˜๋ฅผ ์ถ”์ถœํ•˜๊ฒŒ ๋œ๋‹ค.
      ์œ„์˜ ๋‚ด์šฉ์€ ๋ฌธ์ œ์— ๋‚˜์™€์žˆ๋Š” ๊ทธ๋ฆผ๊ณผ๋Š” ๋‹ค๋ฅธ ํ’€์ด์˜€๋‹ค. ๊ณ„์† ์Šคํƒ์— ์Œ“๊ธฐ๋งŒํ•˜๊ณ  ์ œ๊ฑฐํ•˜์ง„ ์•Š์•„์„œ ํ›„์— ๋ฉ”๋ชจ๋ฆฌ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธธ ์ˆ˜๋„ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์—ฌ ๋ฌธ์ œ์— ๋‚˜์™€์žˆ๋Š” ๊ฒƒ๊ณผ ๋™์ผํ•˜๊ฒŒ push & pop์„ ์‚ฌ์šฉํ•˜์—ฌ ๋‹ค์‹œ ํ’€์—ˆ๋”๋‹ˆ score์˜ ๊ธธ์ด๊ฐ€ ์ ์„ ๊ฒฝ์šฐ๋Š” ์†๋„๊ฐ€ ๋น„์Šทํ–ˆ์œผ๋‚˜ score์˜ ๊ธธ์ด๊ฐ€ ๋งŽ์•„ ์งˆ ๊ฒฝ์šฐ ํ‰๊ท  20ms๊ฐ€ ๋‚˜์˜ค๋˜ ์ด์ „ ํ’€์ด์— ๋น„ํ•ด 0.7ms๊ฐ€ ๋‚˜์™€ ์†๋„๊ฐ€ ํ›จ์”ฌ ๋นจ๋ผ์ง„ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์—‡๋‹ค.
  • [Level2]์˜ˆ์ƒ ๋Œ€์ง„ํ‘œ
    • n๋ช…์ค‘ a์™€ b๊ฐ€ ๋ฌด์กฐ๊ฑด ์ด๊ธด๋‹ค๋Š” ๊ฐ€์ •ํ•˜์— ํ† ๋„ˆ๋จผํŠธ์—์„œ a์™€ b๊ฐ€ ๋ช‡๋ฒˆ์งธ ๊ฒฝ๊ธฐ๋ฅผ ์น˜๋ฃฌ๋’ค ๋งŒ๋‚˜๋Š”์ง€ ์•Œ์•„๋‚ด๋Š” ๋ฌธ์ œ์˜€๋‹ค.
      ์‚ฌ์‹ค n๋ช…์ด๋ผ๋Š” ๊ฒƒ์€ ํ•„์š”ํ•˜์ง€ ์•Š์•˜๋‹ค. a์™€ b๋ฅผ ๋‘˜๋‹ค ์ง์ˆ˜๋กœ ๋‘๊ณ  ๋ช‡๋ฒˆ์งธ์— a์™€ b๋ฅผ ๊ฐ๊ฐ 2๋กœ ๋‚˜๋ˆˆ ๋ชซ์ด ๊ฐ™์•„์งˆ ๋•Œ ๊นŒ์ง€ ๋ฐ˜๋ณต๋ฌธ์„ ์‹คํ–‰ํ•˜๋ฉด ํ’€๋ฆฌ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.
      n๋ช…์ด๋ผ๋Š” ๊ฒƒ์ด ํ•„์š”ํ•˜๋„๋ก ๋ฌธ์ œ๋ฅผ ๊ณ„์‚ฐํ•  ์ˆ˜๋„ ์žˆ์—ˆ์ง€๋งŒ ์‚ฌ์šฉํ•˜์ง€ ์•Š์•„๋„ ํ’€๋ ธ๊ธฐ ๋•Œ๋ฌธ์— ์ฝ”๋“œ๋ฅผ ํ•œ์ค„์ด๋ผ๋„ ๋” ์ค„์ด๋Š” ๊ฒƒ์ด ์ข‹๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๋‹ค. 
      ๋งŒ์•ฝ ๋ฌธ์ œ์—์„œ ๋ช‡๋ฒˆ์งธ์— ๋งŒ๋‚˜๋Š”๊ฐ€? ๋Œ€์‹  a์™€ b๊ฐ€ ๋งŒ๋‚ ๋•Œ๊นŒ์ง€ ๊ฑฐ์ณ๊ฐ„ ์„ ์ˆ˜๋“ค์˜ ๋ฒˆํ˜ธ๋ฅผ ์•Œ์•„๋‚ด์•ผ ํ–ˆ๋‹ค๋ฉด n์„ ์‚ฌ์šฉํ–ˆ์„ ๊ฒƒ์ด๋‹ค.
  • [Level2]์ ํ”„์™€ ์ˆœ๊ฐ„ ์ด๋™
    • ์ ํ”„์™€ ์ˆœ๊ฐ„์ด๋™์„ ํ•˜์—ฌ ์›ํ•˜๋Š” ๋ชฉ์ ์ง€๊นŒ์ง€ ๊ฐ€์žฅ ์ ์€ ๊ฑด์ „์ง€๋ฅผ ์†Œ๋ชจํ•˜์—ฌ ๊ฐˆ ์ˆ˜ ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๋ฌธ์ œ์˜€๋‹ค.
      ์ด๋ฌธ์ œ๋Š” ๊ฒฐ๊ตญ ์ง์ˆ˜ ์ผ๋•Œ๋Š” ์ˆœ๊ฐ„์ด๋™์„ํ•˜๊ณ  ํ™€ ์ˆ˜ ์ผ๋•Œ๋Š” ์ˆœ๊ฐ„์ด๋™ + ์ ํ”„๋ฅผ ํ•˜์—ฌ ์ด๋™ํšŸ์ˆ˜๋ฅผ n*2์”ฉ ์Œ“์•„๊ฐ€๋ฉด ํ’€๋ฆฌ๋Š” ๋ฌธ์ œ์ด๋‹ค.

Next.js ํ•™์Šต

  • ํŽ˜์ด์ง€, ํŒŒ์ผ ๊ธฐ๋ฐ˜ ๋ผ์šฐํŒ…
    • pages ํด๋” ๋‚ด ์ •์  Route, ์ค‘์ฒฉ Route ๊ตฌํ˜„
      • pages ํด๋” ๋‚ด ์ •์  Route๋ฅผ ์„ค์ •ํ•  ๋•Œ๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ js, ts ํŒŒ์ผ ํ•˜๋‚˜๋ฅผ ์ž‘์„ฑํ•˜๋ฉด ๊ทธ๊ฒƒ์ด ํ•˜๋‚˜์˜ Route ์—ญํ• ์„ ํ•˜๊ฒŒ ๋œ๋‹ค. (/portfolio)
      • ์ค‘์ฒฉ Route๋ฅผ ๊ตฌํ˜„ํ•  ๋•Œ๋Š” pages ํด๋”์˜ ํ•˜์œ„ ํด๋”๋ฅผ ๊ตฌ์„ฑํ•˜์—ฌ ํŒŒ์ผ์„ ์ž‘์„ฑํ•˜๊ฒŒ ๋˜๋ฉด ์ค‘์ฒฉ Route ์—ญํ• ์„ ํ•˜๊ฒŒ ๋œ๋‹ค. (/portfolio/list)
    • ๋™์  ๊ฒฝ๋กœ, Route ์ถ”๊ฐ€
      • pages ํด๋”์˜ ํ•˜์œ„ ํด๋”๋ฅผ ํ•˜๋‚˜ ์ƒ์„ฑํ•˜๊ณ  ๊ทธ์•ˆ์— [].js๋ผ๋Š” ๋Œ€๊ด„ํ˜ธ๋กœ ๋™์  ๊ฒฝ๋กœ๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋Œ€๊ด„ํ˜ธ ์•ˆ์—๋Š” ์‹๋ณ„์ž๋ฅผ ์ž‘์„ฑํ•˜๋ฉด ๋œ๋‹ค. (/portfolio/one, /portfolio/hello๋Š” ๊ฒฝ๋กœ๋Š” ๋‹ค๋ฅด์ง€๋งŒ ํ•˜๋‚˜์˜ ์ปดํฌ๋„ŒํŠธ์ด๋‹ค.)
      • ์‚ฌ์šฉํ•˜๋Š” ์ด์œ ๋Š” ์—ฌ๋Ÿฌ ์ข…๋ฅ˜์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ถˆ๋Ÿฌ์™€์•ผ ํ•˜๋Š” ํŽ˜์ด์ง€๋ฅผ ์ƒ์„ฑํ•  ๋•Œ ๋™์  ๋ผ์šฐํŒ…์„ ์‚ฌ์šฉํ•˜๋ฉฐ ์˜ˆ์‹œ๋กœ๋Š” ์˜จ๋ผ์ธ ์Šคํ† ์–ด ์ƒํ’ˆ, ๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๊ธ€ ๋“ฑ์ด ์žˆ๋‹ค.
    • ์ค‘์ฒฉ๋œ ๋™์  Route, ๊ฒฝ๋กœ ๊ตฌ์ถ•
      • pages ํด๋”์˜ ํ•˜์œ„ ํด๋”๋ฅผ ํ•˜๋‚˜ ์ƒ์„ฑํ•˜๊ณ  ๊ทธ ํ•˜์œ„ ํด๋”๋ฅผ [] ๋Œ€๊ด„ํ˜ธ์•ˆ์— ์‹๋ณ„์ž๋ฅผ ํฌํ•จํ•˜์—ฌ ์ƒ์„ฑํ•˜๋ฉด ์ค‘์ฒฉ๋œ ๋™์  Route๋ฅผ ๊ตฌ์ถ•ํ•  ์ˆ˜ ์žˆ๋‹ค. (/์ƒ์œ„pathname/๋™์  pathname/๋™์  pathname์œผ๋กœ ๊ตฌ์„ฑ๊ฐ€๋Šฅ)
    • Catch-All Route ์ถ”๊ฐ€
      • ํŒŒ์ผ ๋ช…์„ [...ํŒŒ์ผ๋ช…].js ์™€ ๊ฐ™์€ ํ˜•์‹์œผ๋กœ ์ž‘์„ฑ์„ ํ•˜๊ฒŒ ๋˜๋ฉด ํ•ญ์ƒ ๋™์ผํ•œ ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋ถˆ๋Ÿฌ์˜ค๋Š” ๋ฐฉ์‹์œผ๋กœ ํŒŒ์ผ ์ด๋ฆ„์œผ๋กœ ๋Œ€๊ด„ํ˜ธ์™€ ์‹๋ณ„์ž๋ฅผ ์ž‘์„ฑํ•˜์ง€ ์•Š๊ณ  ๊ตฌ๋ฌธ์ด๋‚˜ ํŠน์ˆ˜ํ•œ ํ‘œ๊ธฐ๋ฒ•์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋‹ค. ([...slug]) (/blog/2020/12)
      • ๊ฒฝ๋กœ๋ฅผ ํ™•์ธํ•  ๋•Œ๋Š” pathname, query๋“ฑ๊ณผ ๊ฐ™์€ ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” useRouter ๋ผ๋Š” next์—์„œ ๋งŒ๋“  React Hook์„ ์‚ฌ์šฉํ•˜๋ฉด๋œ๋‹ค. (import { useRouter } from 'next/router')

โœ Diary

์•Œ๊ณ ๋ฆฌ์ฆ˜ ์Šคํ„ฐ๋””๋ฅผ ํ•˜๊ณ  ๋‚œ ๋’ค ๋‹ค์Œ๋‚  ๋ฌธ์ œ๋ฅผ ๋‹ค ํ’€์–ด๋‘๋Š” ๊ฒƒ์ด ๋งˆ์Œ์ด ํŽธํ•œ๊ฒƒ ๊ฐ™์•„์„œ ์ด์ „์—๋„ ๊ฐ™์ด ์ž‘์—…์„ ํ•ด๋’€์—ˆ๋Š”๋ฐ ์˜ˆ๊ธฐ์น˜ ์•Š์€ ์ƒํ™ฉ์ด ๋ฐœ์ƒํ•˜์—ฌ ์Šคํ„ฐ๋””๊ฐ€ ์ผ์ฃผ์ผ ๋ฐ€๋ฆฌ๊ฒŒ ๋  ๊ฒฝ์šฐ์— ๋‚˜์˜ ํ’€์ด๋ฅผ ์žŠ์–ด๋ฒ„๋ฆฌ๋Š” ๊ฒƒ ๊ฐ™์•„์„œ ์ฝ”๋“œ์— ์ฃผ์„์„ ์ ๋Š” ๊ฒƒ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๋ธ”๋กœ๊ทธ์— ๊ฐ„๋‹จํ•œ ๋‚˜์˜ ํ’€์ด์— ๋Œ€ํ•œ ์„ค๋ช…์„ ์ ๊ธฐ ์‹œ์ž‘ํ–ˆ๋‹ค!
Next๋กœ Route๋ฅผ ์–ด์ œ ์‹ค์ œ๋กœ ๊ตฌํ˜„ํ–ˆ์—ˆ๋Š”๋ฐ ์˜ค๋Š˜ ๋‹ค์‹œ React์—์„œ ์ž‘์„ฑํ–ˆ์„ ๋•Œ์™€ next๋กœ ๋‹ค์‹œ ์ž‘์„ฑํ•ด ๋ณด์•˜์„ ๋•Œ ํ™•์‹คํžˆ ํŽธํ–ˆ๊ณ  ํด๋”์™€ ํŒŒ์ผ์„ ๊ด€๋ฆฌํ•˜๊ธฐ ๋” ์‰ฌ์›Œ์กŒ๋‹ค๋Š” ๊ฒƒ์„ ๋Š๋ผ๊ฒŒ ๋˜์—ˆ๋‹ค.

'Daily > Today I Learned' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

22.12.02_TIL  (0) 2022.12.02
22.12.01_TIL  (0) 2022.12.01
22.11.29_TIL  (0) 2022.11.29
22.11.28_TIL  (0) 2022.11.29
22.11.27_TIL  (0) 2022.11.29