๋ชฉ๋ก๋ถ๋ฅ ์ ์ฒด๋ณด๊ธฐ (115)
let's get IT with DAVINA ๐ป
ํธํ ์์ ๊ทผ๋ฌดํ๋ฉฐ "์ค๋์ ~~ํ ์ผ์ ํ์ด, ๋ญ๊ฐ ํ๋ค์์ด" ๋ฑ ์น๊ตฌ๋ค์๊ฒ ๊ทผ๋ฌด ์ค ์์๋ ์ผ์ ์ด์ผ๊ธฐํ ๋๋ง๋ค ๋ค๋ค "๋๋ IT์์ผ๋ฉด PMํ์ผ๋ฉด ๋ฑ์ด์๊ฒ ๋ค, ์ฌ์ง์ด ์์ด๋ ์ํ์์"๋ผ๋ ๋ง์ ๋ง์ด ๋ค์๋ค. ๋ณ ์๊ฐ ์์ด ๋น์ทํ ์ง๋ฌด์ IT๊ณ์ด์ชฝ ์ผ์ด๋ผ๊ณ ๋ง ์๊ฐํ๊ณ ๋๊ธฐ๋ค๊ฐ ์ปค๋ฆฌ์ด ์ ํ์ ๊ณ๊ธฐ๊น์ง ๋์๋ค. ํ์ง๋ง ๊ณผ์ฐ ๋น์ ๊ณต์์ IT ๊ฒฝ๋ ฅ์ด๋ผ๊ณค ํ๋๋ ์๋ ๋ด๊ฐ ๊ณผ์ฐ PM์ด ๋ ์ ์์๊น๋ฅผ ๊ณ ๋ฏผํด๋ณด๋ฉฐ ์ฌ๋ฌ ๋ถํธ์บ ํ์ ๋ฌธ์์ฌํญ์ ๋จ๊ฒจ๋ณด๊ณ , ๊ฐ๋ฐ์ ์ง์ธ๋ค์๊ฒ ๋ง์ ํด๋ณด๋ฉด ๋ง์ ์ค์ ํ์ ์ ๋๊ฐ์๋ PM์ ๊ฐ๋ฐ์ง์์ด ํ๋๋ ์์ด๋ ์ผ์ ํ๊ณ ์์๊ณ , ๊ทธ์ ์์ด ๊ฐ๋ฐ์๋ค์ ํ๋ ๊ณ ์ถฉ๋ ๋ค์ด๋ดค๋ค. ์ ๊ทธ๋์ PM์ ์ฑ์ฉ๊ณต๊ณ ๋ค์ ๋ณด๋ฉด ๋์์ด๋์ ๊ฐ๋ฐ์๋ค๊ณผ์ ์ปค๋ฎค๋์ผ์ด์ ์ญ๋์ ๊ฐ์กฐํ๊ณ ์๊ตฌ๋๋ ์๊ฐ์ด ๋ค๋ฉฐ ๊ฐ๋ฐ์ ..
1.1 ์๊ฐ ์๋ฐ์คํฌ๋ฆฝํธ๋ ์น ๋ธ๋ผ์ฐ์ ์์ ๋์ํ๋ ์คํฌ๋ฆฝํธ ์ธ์ด์ด๋ค. ์ฒ์์ ์น ํ์ด์ง ์ ์์ ์์ด์ ๋ณด์กฐ์ ์ธ ๊ธฐ๋ฅ์ ์ํํ๊ธฐ ์ํ ์ฉ๋๋ก์จ ์ฌ์ฉํ์ฌ ์ฃผ๋ชฉ๋ฐ์ง ๋ชปํ๋ ์ธ์ด..๐ฅฒ BUT, prototype.js์ ๊ฐ์ ์ฃผ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค์ด ๊ฐ๋ฐ๋๊ณ && jQuery์ ๋ฑ์ฅ์ผ๋ก ๋ณด๋ค ์ฝ๊ฒ DOM(Document Object Model)์ ํธ๋ค๋งํ๊ฒ ๋๋ฉด์ ๋ง์ ๋ฐ์ ์ ์ด๋ฃจ์๋ค. 1.2 ์๋ฐ์คํฌ๋ฆฝํธ ํ์ฉ ๋ฒ์ 1.2.1 ์น ๊ฐ๋ฐ ํฌ๋กฌ์ด๋ ํ์ด์ดํญ์ค ๋ฑ ์น ๋ธ๋ผ์ฐ์ ๋ค์ด ๋๋ ์ด ๋ฐ์ ํ๋ฉด์ ์๋ก์ด ๋ฒ์ ์ ๋ด๋์๋๋ง๋ค ์๋ฐ์คํฌ๋ฆฝํธ ์์ง์ ์ฑ๋ฅ ํฅ์์ ๊ฐ์กฐํ๋ค. ์ด๋ ์น ํ์ด์ง ๊ฐ๋ฐ์ ์์ด ์๋ฐ์คํฌ๋ฆฝํธ์ ์ญํ ์ด ์ผ๋ง๋ ํฐ์ง๋ฅผ ๋ฐฉ์ฆํ๋ค. 1.2.2 ์๋ฒ ๊ฐ๋ฐ Node.js์ ์ถํ์ผ๋ก ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ํ์ฉํ ์๋ฒ ๊ฐ๋ฐ๋ ํ..
๋ณดํธ๋์ด ์๋ ๊ธ์ ๋๋ค.
๋ณดํธ๋์ด ์๋ ๊ธ์ ๋๋ค.
โ๏ธ ์ฌ์ Knowledge ++ FE ์ํ ๊ด๋ฆฌ redux, mobx, recoil ๋ฑ ๋ค์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์กด์ฌ ์ํ๋? ์ฃผ์ด์ง ์๊ฐ์ ๋ํด ์์คํ ์ ๋ํ๋ด๋ ๊ฒ์ผ๋ก ์ธ์ ๋ ์ง ๋ณ๊ฒฝ๋ ์ ์์. ์ฆ, ๋ฌธ์์ด, ๋ฐฐ์ด, ๊ฐ์ฒด ๋ฑ์ ํํ๋ก ์์ฉ ํ๋ก๊ทธ๋จ์ ์ ์ฅ๋ ๋ฐ์ดํฐ → ๊ฐ๋ฐ์ ์ ์ฅ์์๋ ๊ด๋ฆฌํด์ผํ๋ ๋ฐ์ดํฐ๋ค ์ํ๊ด๋ฆฌ? ์๊ฐ์ ํ๋ฆ์ ๋ฐ๋ผ ๋ณํํ๋ ์ํ๋ฅผ ๊ด๋ฆฌํ๋ ๊ฒ React์์ ๋จ๋ฐฉํฅ ๋ฐ์ธ๋ฉ์ด๋ฏ๋ก props drilling ์ด์๋ ์กด์ฌ (redux, mobx์ ๊ฐ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํด์ ํด๊ฒฐํ๊ธฐ๋ ํจ) store์ ์ ์ญ์ํ๊ฐ ์ ์ฅ๋๊ณ ๊ด๋ฆฌ๋๋ ๊ณต๊ฐ์ธ๋ฐ redux, redux-saga๋ฐฉ์์ผ๋ก ๋น๋๊ธฐ ์์ฒญ์ ๊ตฌํํ๊ฒ ๋๋ฉด redux ๊ตฌํํ๋ ๋ชจ๋์ APIํต์ ๊ด๋ จ ์ฝ๋๊ฐ ๋๋ถ๋ถ์ด๊ฒ ๋จ ๋น์ทํ ๊ตฌ์กฐ์ API ํต..
๋ณดํธ๋์ด ์๋ ๊ธ์ ๋๋ค.
โ๋ฌธ์ ์ค๋ช ๋ฌธ์์ด my_string์ด ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง ๋, ๋๋ฌธ์๋ ์๋ฌธ์๋ก ์๋ฌธ์๋ ๋๋ฌธ์๋ก ๋ณํํ ๋ฌธ์์ด์ returnํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์. ๐ซ ์ ํ์ฌํญ 1 ≤ my_string์ ๊ธธ์ด ≤ 1,000 my_string์ ์์ด ๋๋ฌธ์์ ์๋ฌธ์๋ก๋ง ๊ตฌ์ฑ๋์ด ์์ต๋๋ค. ๐๏ธ ์ ์ถ๋ ฅ ์ my_string result "cccCCC" "CCCccc" "abCdEfghIJ" "ABcDeFGHij" โ๏ธ๋น๋'s ํ์ด ์ฒ์์๋ 1์ฐจ ๋ฐ๋ณต๋ฌธ์ lower์์ ๋๋ ธ๊ณ , 2์ฐจ ๋ฐ๋ณต๋ฌธ์ my_string์์ ๋๋ ค์ ํ ์คํธ์ผ์ด์ค๋ ํต๊ณผํ์ผ๋ ์ ์ถ์ ํ๋ฉด ํต๊ณผ๋ฅผ ๋ชปํ๋ค.. ๊ทธ๋์ ํ ์คํธ์ผ์ด์ค์ ์๋ ๋ด๊ฐ ์๊ฐ ๋ชปํ ๊ฒฝ์ฐ๊ฐ ๋ญ๊ฐ ์๋ ์๊ฐํด๋ดค๋๋ ๋ง์ฝ ์ ๋ ฅ๊ฐ์ด ์ํ๋ฒณ ์์๋๋ก๊ฐ ์๋๋ผ "gbca"์ฒ๋ผ ๋ฌด..
โ ๋ฌธ์ ์ด๋ค ํฐ ๋ํ์ง์ ๊ทธ๋ฆผ์ด ๊ทธ๋ ค์ ธ ์์ ๋, ๊ทธ ๊ทธ๋ฆผ์ ๊ฐ์์, ๊ทธ ๊ทธ๋ฆผ ์ค ๋์ด๊ฐ ๊ฐ์ฅ ๋์ ๊ฒ์ ๋์ด๋ฅผ ์ถ๋ ฅํ์ฌ๋ผ. ๋จ, ๊ทธ๋ฆผ์ด๋ผ๋ ๊ฒ์ 1๋ก ์ฐ๊ฒฐ๋ ๊ฒ์ ํ ๊ทธ๋ฆผ์ด๋ผ๊ณ ์ ์ํ์. ๊ฐ๋ก๋ ์ธ๋ก๋ก ์ฐ๊ฒฐ๋ ๊ฒ์ ์ฐ๊ฒฐ์ด ๋ ๊ฒ์ด๊ณ ๋๊ฐ์ ์ผ๋ก ์ฐ๊ฒฐ์ด ๋ ๊ฒ์ ๋จ์ด์ง ๊ทธ๋ฆผ์ด๋ค. ๊ทธ๋ฆผ์ ๋์ด๋ ๊ทธ๋ฆผ์ ํฌํจ๋ 1์ ๊ฐ์์ด๋ค. ๐๏ธ ์ ๋ ฅ ์ฒซ์งธ ์ค์ ๋ํ์ง์ ์ธ๋ก ํฌ๊ธฐ n(1 ≤ n ≤ 500)๊ณผ ๊ฐ๋ก ํฌ๊ธฐ m(1 ≤ m ≤ 500)์ด ์ฐจ๋ก๋ก ์ฃผ์ด์ง๋ค. ๋ ๋ฒ์งธ ์ค๋ถํฐ n+1 ์ค ๊น์ง ๊ทธ๋ฆผ์ ์ ๋ณด๊ฐ ์ฃผ์ด์ง๋ค. (๋จ ๊ทธ๋ฆผ์ ์ ๋ณด๋ 0๊ณผ 1์ด ๊ณต๋ฐฑ์ ๋๊ณ ์ฃผ์ด์ง๋ฉฐ, 0์ ์์น ์ด ์๋ ๋ถ๋ถ, 1์ ์์น ์ด ๋ ๋ถ๋ถ์ ์๋ฏธํ๋ค) ๐๏ธ ์ถ๋ ฅ ์ฒซ์งธ ์ค์๋ ๊ทธ๋ฆผ์ ๊ฐ์, ๋์งธ ์ค์๋ ๊ทธ ์ค ๊ฐ์ฅ ๋์ ๊ทธ๋ฆผ์ ๋์ด๋ฅผ ์ถ๋ ฅํ์ฌ..