๐ ์ค๋ ํ ์ผ
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์ ์ฌ์ฉํ์ ๊ฒ์ด๋ค.
- n๋ช
์ค a์ b๊ฐ ๋ฌด์กฐ๊ฑด ์ด๊ธด๋ค๋ ๊ฐ์ ํ์ ํ ๋๋จผํธ์์ a์ b๊ฐ ๋ช๋ฒ์งธ ๊ฒฝ๊ธฐ๋ฅผ ์น๋ฃฌ๋ค ๋ง๋๋์ง ์์๋ด๋ ๋ฌธ์ ์๋ค.
- [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')
- pages ํด๋ ๋ด ์ ์ Route, ์ค์ฒฉ Route ๊ตฌํ
โ 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 |