์๊ฐ ์ฃผ์ด์ง ๋ฆฌ์คํธ์์ ๊ฐ์ฅ ์์ ๊ฐ์ ์ ํํ์ฌ ๋งจ ์์ ์์น์ํค๊ณ , ๊ทธ๋ค์์ผ๋ก ์์ ๊ฐ์ ์ฐพ์ ๋ ๋ฒ์งธ ์์น์ ์์น์ํค๋ ๊ณผ์ ์ ๋ฐ๋ณตํ์ฌ ์ ๋ ฌํ๋ ์๊ณ ๋ฆฌ์ฆ์ ๋๋ค. ์์ผ๋ก ๋ณด๋ด์ง ์์๋ ๋ ์ด์ ์์น๊ฐ ๋ณ๊ฒฝ๋์ง ์์ต๋๋ค. ๊ธฐ๋ณธ ๊ฐ๋ ์ ํ ์ ๋ ฌ์ ๊ฐ๋จํ๋ฉด์๋ ์ดํดํ๊ธฐ ์ฝ๊ณ ์ฝ๋ ๊ตฌํ์ด ์ฌ์ด ์๊ณ ๋ฆฌ์ฆ์ด์ง๋ง, ๊ทธ๋งํผ ์๊ฐ ๋ณต์ก๋๊ฐ ๋์ ๋๊ท๋ชจ ๋ฐ์ดํฐ๋ฅผ ์ ๋ ฌํ ๋๋ ์ฑ๋ฅ์ด ๋จ์ด์ง๋ ๋จ์ ์ด ์์ต๋๋ค. ์ ํ ์ ๋ ฌ์ ์๊ฐ ๋ณต์ก๋๋ O(N^2)์ผ๋ก, ์ ๋ ฅ ๋ฐ์ดํฐ์ ํฌ๊ธฐ๊ฐ ์ปค์ง์๋ก ์ฑ๋ฅ ์ ํ๊ฐ ๋์ฑ ์ฌํด์ง๋๋ค. ์์ ์ฝ๋ function selectionSort(arr) { const n = arr.length; for (let i = 0; i < n - 1; i++) { let minIndex = i; for (let..
์๊ฐ ๋ฒ๋ธ ์ ๋ ฌ(Bubble Sort)์ ๊ฐ์ฅ ๊ฐ๋จํ๊ณ ๊ธฐ๋ณธ์ ์ธ ์๊ณ ๋ฆฌ์ฆ ์ค ํ๋๋ก, ์ด๋ฆ์์๋ ์ ์ ์๋ฏ์ด ๋ฐฐ์ด์ ์์๋ฅผ '๊ฑฐํ(Bubble)'์ฒ๋ผ ์๋ก ๊ตํํด ๊ฐ๋ฉฐ ์ ๋ ฌํ๋ ๋ฐฉ์์ ๋๋ค. ์ฆ, ์๋ก ์ธ์ ํ ๋ ์์๋ฅผ ๋น๊ตํด๊ฐ๋ฉฐ ์ค๋ฆ์ฐจ์์ด๋ ๋ด๋ฆผ์ฐจ์์ผ๋ก ์ ์ ์งํํฉ๋๋ค. ๊ธฐ๋ณธ ๊ฐ๋ ๋ฒ๋ธ ์ ๋ ฌ์ ๊ฐ๋ ์ ๋ง์ฝ ์ซ์ ๋ฐฐ์ด์ ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌํ๋ ์ํฉ์์ ๋ ํฐ ์ซ์๊ฐ ํ ๋ฒ์ ํ๋์ฉ ๋ค๋ก ์ด๋ํ๋ ๋ฐฉ๋ฒ์ ๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก ์ด๋ค ํญ๋ชฉ์ด ๋ ํฌ๋ฉด ๊ตํํ๊ณ , ๋ค์ ํญ๋ชฉ๊ณผ ๋น๊ตํ๊ณ , ๋ค์ ํญ๋ชฉ๋ณด๋ค ๋ ํฌ๋ฉด ๋ ๊ตํ์ ํ๊ณ , ๋ค์ ๋ค์ ํญ๋ชฉ๊ณผ ๋น๊ตํ๋ฉด์ ๋ฐ๋ณต์ ํฉ๋๋ค. ์ค๋ฆ์ฐจ์์ ์ํฉ์์๋ ๊ฐ์ฅ ํฐ ๊ฐ์ด ์๋จ์ ํฅํด์ ๊ฐ์ ์ ๋ ฌํ๋ ๋ฐฉ์์ผ๋ก ๋ชฉ๋ก์ ๋ง๋ญ๋๋ค. ์์ ์ฝ๋ #1 function bubbleSort(arr)..
๐ ๋ค์ด๊ฐ๋ฉฐ ์๋ฐ์คํฌ๋ฆฝํธ์์ ์ด๋ฒคํธ ๋ฃจํ(Event Loop)๋ ๋ฌด์์ด๊ณ , ์ ์ค์ํ ๊ฐ๋ ์ผ๊น์? ์ฑ๊ธ ์ค๋ ๋(Single Thread)๋? ์๋ฐ์คํฌ๋ฆฝํธ๋ ์ฑ๊ธ ์ค๋ ๋ ๊ธฐ๋ฐ์ ์ธ์ด์ ๋๋ค. ๊ทธ๋ ๋ค๋ฉด ์ฑ๊ธ ์ค๋ ๋๋ ๋ฌด์์ผ๊น์? ์ฑ๊ธ ์ค๋ ๋๋ฅผ ์ดํดํ๊ธฐ ์ ์ ์ค๋ ๋๋ผ๋ ๊ฐ๋ ์ ๋จผ์ ์์์ผ ํฉ๋๋ค. ์ค๋ ๋๋ ํ๋ก์ธ์ค์ ์คํ ๋จ์์ ๋๋ค. ์ฆ, ์ผ์ ์ฒ๋ฆฌํ๋ ์์ ์์๊ณผ ๊ฐ์ ์ญํ ์ ํ๋ค๊ณ ์๊ฐํ๋ฉด ๋ฉ๋๋ค. ์ฑ๊ธ ์ค๋ ๋๋ผ๋ ๊ฒ์ ๋ง ๊ทธ๋๋ก ์ค๋ ๋๊ฐ ํ๋๋ง ์กด์ฌ, ์ผ์ ์ฒ๋ฆฌํ๋ ์์ ์์์ด ํ ๋ช ๋ฐ์ ์๋ ์๊ธฐ์ ๋๋ค. ๋ธ๋กํน(Blocking)๊ณผ ๋ ผ๋ธ๋กํน(Non-blocking) ์ฐ๋ฆฌ์ ์์ ์์์ ํ ๋ช ์ด๋ผ์ ๋ชจ๋ ์ผ์ ํ ๋ฒ์ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค. ๋ง์ฝ ์ฐ๋ฆฌ๊ฐ ์ปดํจํฐ์๊ฒ ๋งก๊ธด ์ผ ์ค ํ๋๊ฐ ๋๋ฌด ์ค๋ ๊ฑธ๋ฆฐ๋ค๋ฉด ์ด๋ป..
๋์ด๋: ๊ณจ๋ 4 ํ์ด ์๊ณ ๋ฆฌ์ฆ: BFS ๋ฌธ์ N×Nํฌ๊ธฐ์ ๋ ์ด ์๊ณ , ๋ ์ 1×1๊ฐ์ ์นธ์ผ๋ก ๋๋์ด์ ธ ์๋ค. ๊ฐ๊ฐ์ ๋ ์๋ ๋๋ผ๊ฐ ํ๋์ฉ ์กด์ฌํ๋ฉฐ, rํ c์ด์ ์๋ ๋๋ผ์๋ A[r][c]๋ช ์ด ์ด๊ณ ์๋ค. ์ธ์ ํ ๋๋ผ ์ฌ์ด์๋ ๊ตญ๊ฒฝ์ ์ด ์กด์ฌํ๋ค. ๋ชจ๋ ๋๋ผ๋ 1×1 ํฌ๊ธฐ์ด๊ธฐ ๋๋ฌธ์, ๋ชจ๋ ๊ตญ๊ฒฝ์ ์ ์ ์ฌ๊ฐํ ํํ์ด๋ค. ์ค๋๋ถํฐ ์ธ๊ตฌ ์ด๋์ด ์์๋๋ ๋ ์ด๋ค. ์ธ๊ตฌ ์ด๋์ ํ๋ฃจ ๋์ ๋ค์๊ณผ ๊ฐ์ด ์งํ๋๊ณ , ๋ ์ด์ ์๋ ๋ฐฉ๋ฒ์ ์ํด ์ธ๊ตฌ ์ด๋์ด ์์ ๋๊น์ง ์ง์๋๋ค. ๊ตญ๊ฒฝ์ ์ ๊ณต์ ํ๋ ๋ ๋๋ผ์ ์ธ๊ตฌ ์ฐจ์ด๊ฐ L๋ช ์ด์, R๋ช ์ดํ๋ผ๋ฉด, ๋ ๋๋ผ๊ฐ ๊ณต์ ํ๋ ๊ตญ๊ฒฝ์ ์ ์ค๋ ํ๋ฃจ ๋์ ์ฐ๋ค. ์์ ์กฐ๊ฑด์ ์ํด ์ด์ด์ผํ๋ ๊ตญ๊ฒฝ์ ์ด ๋ชจ๋ ์ด๋ ธ๋ค๋ฉด, ์ธ๊ตฌ ์ด๋์ ์์ํ๋ค. ๊ตญ๊ฒฝ์ ์ด ์ด๋ ค์์ด ์ธ์ ํ ์นธ๋ง์ ์ด์ฉํด ์ด๋ํ ..
๋์ด๋: ๊ณจ๋ 3 ํ์ด ์๊ณ ๋ฆฌ์ฆ: BFS ๋ฌธ์ N×M์ ๋ชจ๋์ข ์ด ์์ ์์ฃผ ์์ ์น์ฆ๊ฐ ๊ณผ ๊ฐ์ด ํ์๋์ด ์๋ค. ๋จ, N ์ ์ธ๋ก ๊ฒฉ์์ ์์ด๊ณ , M ์ ๊ฐ๋ก ๊ฒฉ์์ ์์ด๋ค. ์ด ์น์ฆ๋ ๋๋ ๋ณด๊ด์ ํด์ผ๋ง ํ๋๋ฐ ์ค๋ด์จ๋์ ๋ด์ด๋์ผ๋ฉด ๊ณต๊ธฐ์ ์ ์ดํ์ฌ ์ฒ์ฒํ ๋ น๋๋ค. ๊ทธ๋ฐ๋ฐ ์ด๋ฌํ ๋ชจ๋์ข ์ด ๋ชจ์์ ์น์ฆ์์ ๊ฐ ์น์ฆ ๊ฒฉ์(์ ์ ์ ์ฌ๊ฐํ ๋ชจ์)์ 4๋ณ ์ค์์ ์ ์ด๋ 2๋ณ ์ด์์ด ์ค๋ด์จ๋์ ๊ณต๊ธฐ์ ์ ์ดํ ๊ฒ์ ์ ํํ ํ์๊ฐ๋ง์ ๋ น์ ์์ด์ ธ ๋ฒ๋ฆฐ๋ค. ๋ฐ๋ผ์ ์๋ ๋ชจ์๊ณผ ๊ฐ์ ์น์ฆ(ํ์์ผ๋ก ํ์๋ ๋ถ๋ถ)๋ผ๋ฉด C๋ก ํ์๋ ๋ชจ๋ ์น์ฆ ๊ฒฉ์๋ ํ ์๊ฐ ํ์ ์ฌ๋ผ์ง๋ค. ์ ๊ฐ์ด ์น์ฆ ๋ด๋ถ์ ์๋ ๊ณต๊ฐ์ ์น์ฆ ์ธ๋ถ ๊ณต๊ธฐ์ ์ ์ดํ์ง ์๋ ๊ฒ์ผ๋ก ๊ฐ์ ํ๋ค. ๊ทธ๋ฌ๋ฏ ๋ก ์ด ๊ณต๊ฐ์ ์ ์ดํ ์น์ฆ ๊ฒฉ์๋ ๋ น์ง ์๊ณ C๋ก ํ์๋ ์น์ฆ..
๋์ด๋: ๊ณจ๋ 2 ํ์ด ์๊ณ ๋ฆฌ์ฆ: BFS ๋ฌธ์ ์์ฃผ ๋จผ ๋ฏธ๋์ ์ฌ๋๋ค์ด ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉํ๋ ๋์ค๊ตํต์ ํ์ดํผํ๋ธ์ด๋ค. ํ์ดํผํ๋ธ ํ๋๋ ์ญ K๊ฐ๋ฅผ ์๋ก ์ฐ๊ฒฐํ๋ค. 1๋ฒ์ญ์์ N๋ฒ์ญ์ผ๋ก ๊ฐ๋๋ฐ ๋ฐฉ๋ฌธํ๋ ์ต์ ์ญ์ ์๋ ๋ช ๊ฐ์ผ๊น? ์ ๋ ฅ ์ฒซ์งธ ์ค์ ์ญ์ ์ N๊ณผ ํ ํ์ดํผํ๋ธ๊ฐ ์๋ก ์ฐ๊ฒฐํ๋ ์ญ์ ๊ฐ์ K, ํ์ดํผํ๋ธ์ ๊ฐ์ M์ด ์ฃผ์ด์ง๋ค. (1 ≤ N ≤ 100,000, 1 ≤ K, M ≤ 1000) ๋ค์ M๊ฐ ์ค์๋ ํ์ดํผํ๋ธ์ ์ ๋ณด๊ฐ ํ ์ค์ ํ๋์ฉ ์ฃผ์ด์ง๋ค. ์ด K๊ฐ ์ซ์๊ฐ ์ฃผ์ด์ง๋ฉฐ, ์ด ์ซ์๋ ๊ทธ ํ์ดํผํ๋ธ๊ฐ ์๋ก ์ฐ๊ฒฐํ๋ ์ญ์ ๋ฒํธ์ด๋ค. ์ถ๋ ฅ ์ฒซ์งธ ์ค์ 1๋ฒ์ญ์์ N๋ฒ์ญ์ผ๋ก ๊ฐ๋๋ฐ ๋ฐฉ๋ฌธํ๋ ์ญ์ ๊ฐ์์ ์ต์๊ฐ์ ์ถ๋ ฅํ๋ค. ๋ง์ฝ, ๊ฐ ์ ์๋ค๋ฉด -1์ ์ถ๋ ฅํ๋ค. ์์ ์ ๋ ฅ 1 9 3 5 1 2 3 ..
๋ฌธ์ NxN ํฌ๊ธฐ์ ์ํ๊ด์ด ์๋ค. ์ํ๊ด์ 1x1 ํฌ๊ธฐ์ ์นธ์ผ๋ก ๋๋์ด์ง๋ฉฐ, ํน์ ํ ์์น์๋ ๋ฐ์ด๋ฌ์ค๊ฐ ์กด์ฌํ ์ ์๋ค. ๋ชจ๋ ๋ฐ์ด๋ฌ์ค๋ 1๋ฒ๋ถํฐ K๋ฒ๊น์ง์ ๋ฐ์ด๋ฌ์ค ์ข ๋ฅ ์ค ํ๋์ ์ํ๋ค. ์ํ๊ด์ ์กด์ฌํ๋ ๋ชจ๋ ๋ฐ์ด๋ฌ์ค๋ 1์ด๋ง๋ค ์, ํ, ์ข, ์ฐ์ ๋ฐฉํฅ์ผ๋ก ์ฆ์ํด ๋๊ฐ๋ค. ๋จ, ๋งค ์ด๋ง๋ค ๋ฒํธ๊ฐ ๋ฎ์ ์ข ๋ฅ์ ๋ฐ์ด๋ฌ์ค๋ถํฐ ๋จผ์ ์ฆ์ํ๋ค. ๋ํ ์ฆ์ ๊ณผ์ ์์ ํน์ ํ ์นธ์ ์ด๋ฏธ ์ด๋ ํ ๋ฐ์ด๋ฌ์ค๊ฐ ์กด์ฌํ๋ค๋ฉด, ๊ทธ ๊ณณ์๋ ๋ค๋ฅธ ๋ฐ์ด๋ฌ์ค๊ฐ ๋ค์ด๊ฐ ์ ์๋ค. ์ํ๊ด์ ํฌ๊ธฐ์ ๋ฐ์ด๋ฌ์ค์ ์์น ์ ๋ณด๊ฐ ์ฃผ์ด์ก์ ๋, S์ด๊ฐ ์ง๋ ํ์ (X,Y)์ ์กด์ฌํ๋ ๋ฐ์ด๋ฌ์ค์ ์ข ๋ฅ๋ฅผ ์ถ๋ ฅํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค. ๋ง์ฝ S์ด๊ฐ ์ง๋ ํ์ ํด๋น ์์น์ ๋ฐ์ด๋ฌ์ค๊ฐ ์กด์ฌํ์ง ์๋๋ค๋ฉด, 0์ ์ถ๋ ฅํ๋ค. ์ด ๋ X์ Y๋ ๊ฐ๊ฐ ํ๊ณผ..
๋ฌธ์ ๐ ROR ๊ฒ์์ ๋ ํ์ผ๋ก ๋๋์ด์ ์งํํ๋ฉฐ, ์๋ ํ ์ง์์ ๋จผ์ ํ๊ดดํ๋ฉด ์ด๊ธฐ๋ ๊ฒ์์ ๋๋ค. ๋ฐ๋ผ์, ๊ฐ ํ์ ์๋ ํ ์ง์์ ์ต๋ํ ๋นจ๋ฆฌ ๋์ฐฉํ๋ ๊ฒ์ด ์ ๋ฆฌํฉ๋๋ค. ์ง๊ธ๋ถํฐ ๋น์ ์ ํ ํ์ ํ์์ด ๋์ด ๊ฒ์์ ์งํํ๋ ค๊ณ ํฉ๋๋ค. ๋ค์์ 5 x 5 ํฌ๊ธฐ์ ๋งต์, ๋น์ ์ ์บ๋ฆญํฐ๊ฐ (ํ: 1, ์ด: 1) ์์น์ ์๊ณ , ์๋ ํ ์ง์์ (ํ: 5, ์ด: 5) ์์น์ ์๋ ๊ฒฝ์ฐ์ ์์์ ๋๋ค. ์ ๊ทธ๋ฆผ์์ ๊ฒ์์ ๋ถ๋ถ์ ๋ฒฝ์ผ๋ก ๋งํ์์ด ๊ฐ ์ ์๋ ๊ธธ์ด๋ฉฐ, ํฐ์ ๋ถ๋ถ์ ๊ฐ ์ ์๋ ๊ธธ์ ๋๋ค. ์บ๋ฆญํฐ๊ฐ ์์ง์ผ ๋๋ ๋, ์, ๋จ, ๋ถ ๋ฐฉํฅ์ผ๋ก ํ ์นธ์ฉ ์ด๋ํ๋ฉฐ, ๊ฒ์ ๋งต์ ๋ฒ์ด๋ ๊ธธ์ ๊ฐ ์ ์์ต๋๋ค. ์๋ ์์๋ ์บ๋ฆญํฐ๊ฐ ์๋ ํ ์ง์์ผ๋ก ๊ฐ๋ ๋ ๊ฐ์ง ๋ฐฉ๋ฒ์ ๋ํ๋ด๊ณ ์์ต๋๋ค. ์ฒซ ๋ฒ์งธ ๋ฐฉ๋ฒ์ 11๊ฐ..
๐ ๋ค์ด๊ฐ๋ฉฐ ์ด์ ๊ธ React.memo ๊ธ์์ ๋ถ๋ชจ ์ปดํฌ๋ํธ์์ ํจ์๋ฅผ props๋ก ๋ฐ์ ๋ ํด๊ฒฐํ ์ ์๋ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์๋ useCallback์ ๋ํด์ ์์๋ณด๊ฒ ์ต๋๋ค. useCallback์ด๋ โ ๋จผ์ React์์ useCallback์ ๋ฆฌ๋ ๋๋ง ์ฌ์ด์ ํจ์ ์ ์๋ฅผ ์บ์ ํ ์ ์๊ฒ ํด์ฃผ๋ React ํ ์ ๋๋ค. ์ฆ, useCallback ํ ์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ปดํฌ๋ํธ ์คํ ์ ๋ฐ์ ๊ฑธ์ณ ํจ์๋ฅผ ์ ์ฅํ ์ ์๊ฒ ํ๋ ํ ์ผ๋ก React์ ํจ์๋ฅผ ์บ์ฑํ๊ณ ๋งค ์คํ๋ง๋ค ํด๋น ํจ์๋ฅผ ์ฌ์์ฑ๋๋ ์ํฉ์ ๋ง์ ์ ์์ต๋๋ค. ์ฌ์ฉ ๋ฐฉ๋ฒ ์บ์ฑํ๋ ค๋ ํจ์๋ฅผ useCallback์ผ๋ก ๋ํ ํ๊ธฐ๋ง ํ๋ฉด ๋ฉ๋๋ค. // Button.js const Button = ({ onClick }) => { console.log('..