๐ก ์๋กญ๊ฒ ์๊ฒ ๋ ์ & ๋๋ ์
1. MVC ํจํด
1์ฃผ์ฐจ๋๋, ํ ํด๋์ค ๋ด์์ ํด๊ฒฐํ ์ ์๋ ๊ฐ๋จํ ๊ตฌํ์ ์ฌ๋ฌ ํด๋์ค์ ๋ฉ์๋๋ก ์ชผ๊ฐ์ด ํด์ผ ํ๋์ง ๊ทธ ์ ํํ ์ด์ ๋ฅผ ์์ง ๋ชปํ์ต๋๋ค. ๊ทธ๋ ๊ธฐ์ ์ด ๋๋ ํด๋์ค๋ฅผ ๋ง์ด ๋๋์ง ์๊ณ ์ ๊ฐ ํด์ค๋ ๋ฐฉ์๊ณผ ๊ฐ๊น๊ฒ ๊ตฌํ์ ํ์ต๋๋ค.
์ด๋ฒ 2์ฃผ์ฐจ๋ฅผ ์์ํ๋ฉด์, ์ ๋ฒ์ฃผ์๋ ๋ค๋ฅด๊ฒ MVC ํจํด์ ํ ๋ฒ ๋์ ํด๋ณด์์ผ๊ฒ ๋ค๋ ์๊ฐ์ด ๋ค์์ต๋๋ค. ์๋ํ๋ฉด 1์ฃผ์ฐจ์์๋ ํด๋์ค์ ๋ฉ์๋๋ฅผ ๋๋๋ ๊ณผ์ ์์, ์กฐ๊ธ ํผ์กํ๋ค๋ ์๊ฐ์ด ๋ค์๊ณ ๋ง์ฝ ๋์ฑ ํฐ ๊ธฐ๋ฅ์ ๊ตฌํํด์ผํ ๋๋ ๊ทธ ๋ฌธ์ ์ ์ด ๋ ์ปค์ง ๊ฒ ๊ฐ์๊ธฐ ๋๋ฌธ์ ๋๋ค.
๋์์ธ ํจํด์ ๋ํด์๋ ๋ค์ด๋ง ๋ณด์๊ธฐ ๋๋ฌธ์, ๊ธฐ๋ฅ ๋ชฉ๋ก์ ์์ฑํ๊ธฐ ์ ์ ๋ง์ ๊ธ๋ค์ ์ฐพ์๋ณด์์ต๋๋ค. ํ์ง๋ง ๋ชจ๋ ๊ธ์ ๋ด์ฉ์ด ๋น์ทํ๋ฉด์๋ ์ฝ๊ฐ ๋ฌ๋๊ณ , ํนํ ์ ํํ ์ฝ๋๋ก ์์๋ฅผ ๋ค์ด ์ ๋ฆฌ๋ ๊ธ์ ๊ฑฐ์ ์ฐพ์ง ๋ชปํ์ต๋๋ค. ์์ฆ ๊ฐ์ ์ธ์์ ์ด๋ ๊ฒ ์ ๋ณด๊ฐ ์ ๋ฆฌ๋์ด ์์ง ์๋ค๋, ์๋ฌธ์ ์ ํ์ผ๋ฉฐ ์ด๋ฒ์๋ ์ ํ๋ธ์์ ์์์ ๋ณด๊ธฐ๋ก ๊ฒฐ์ ํ์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ ๊ทธ ์๋ฌธ์ ์ ์ฐํ ์ฝ ์ฑ๋์ ์๋ 10๋ถ ํ ์ฝํก์ ์์์์ ์ฐพ์ ์ ์์์ต๋๋ค. (๋งํฌ: https://youtu.be/Yzx-z6kCD2A?si=gT0HWgC5SMr9O_uW)
ํด๋น ์์์์๋ MVC ํจํด์ ๋ํ ์ค๋ช ์ ์ค๋ ํ์ง ์๊ณ , ๋ฃ๋ ์ด์๊ฒ ์ง๋ฌธ์ ๊ฑด๋ค๋ฉฐ ์ค์ค๋ก ์๊ฐํ๊ฒ๋ ๋ง๋ค์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ทธ ๋์์ ๋์จ ๊ฒฐ๋ก ์, MVC ํจํด์ ์ ๋ต์ ์๋ค๋ ๊ฒ์ด์์ต๋๋ค. ๋ฌผ๋ก ๋์์ธ ํจํด์ด๊ธฐ์ ๋ง์ ์ฌ๋๋ค์ด ์ฌ์ฉํ๋ ํํ๋ ์๊ฒ ์ง๋ง, ๊ทธ๋ฐ ๊ฒ๋ค์ ์ซ๊ธฐ ๋ณด๋ค๋ ๊ทธ ๋ณธ์ง์ ์ซ๋ ๊ฒ์ด ์ณ๋ค๋ ๋ป์ด์์ต๋๋ค.
MVC ํจํด์ ๋ณธ์ง์ ๊ฐ๋จํ ๋งํ๋ฉด ๋ชจ๋ธ๊ณผ ๋ทฐ๋ฅผ ๋ถ๋ฆฌํ์ฌ, ์ ์ง๋ณด์๋ฅผ ์ฉ์ดํ๊ฒ ํ๊ธฐ ์ํจ์ด๋ผ๊ณ ํฉ๋๋ค. ๋ฐ์ดํฐ๋ฅผ ๋ชจ๋ธ์์ ๊ด๋ฆฌํ๊ณ , ๋ทฐ์์๋ ๊ทธ ๋ฐ์ดํฐ๋ฅผ ์ปจํธ๋กค๋ฌ๋ก๋ถํฐ ๋ฐ์ ์ ์ ์ ์์ฒญ๋๋ก ๋ณด์ฌ์ฃผ๋ฉด์, ์๋ก์๊ฒ ์ํฅ์ ์ฃผ์ง ์์ผ๋ฉฐ ๋น์ฆ๋์ค ๋ก์ง์ ์คํํ ์ ์์ต๋๋ค.
๋๋ฆ ๋ง์ ๊ธ๊ณผ ์์์ ์ฐพ์๋ณด๋ฉฐ ๊ฐ์ ์ก์ ์ ์์ง๋ง, ์ค์ ๋ก ์ ์ ์ฝ๋์ ์ ์ฉํ๋ ค๋ ์ฐธ ๊ณ ๋ฏผ์ด ๋ง์์ก์ต๋๋ค. ๋ํ์ ์ธ ๊ณ ๋ฏผ์ ๋ค์๊ณผ ๊ฐ์์ต๋๋ค.
-
domain๊ณผserviceํจํค์ง๋ ๋ง๋ค์ด์ผ ํ๋๊ฐ? โ ์ฒซ ๋์ ์ด๊ธฐ์model,view,controller๋ง์ผ๋ก ๊ตฌ์ฑํ๊ธฐ๋ก ๊ฒฐ์ ํ์ต๋๋ค. -
์ฌ์ฉ์์ ์ ๋ ฅ์ ๋ฐ๋ ๊ณณ์
view์ธ๊ฐcontroller์ธ๊ฐ? โ ๊ฐ์ฅ ๋ง์ด ๊ณ ๋ฏผ์ ํ ๋ถ๋ถ์ด์์ต๋๋ค. ๊ฒฐ๋ก ์ ์ผ๋ก ์ ๋ ์ด๋ฒ์ ๋ทฐ์์ ์ ๋ ฅ ๋ฐ์ ์ปจํธ๋กค๋ฌ๋ฅผ ํตํด ๋ชจ๋ธ์ ๋ฐ์ดํฐ๋ฅผ ๋ง๋ค์์ต๋๋ค. ํ์ง๋ง ์น ํ์ด์ง์ ๊ฒฝ์ฐ์์๋ ๋ณดํต ์ปจํธ๋กค๋ฌ์์ ์ฌ์ฉ์์ ์ ๋ ฅ์ ๋ฐ๋๋ค๋ ๊ธ์ ์ฌ๋ฟ ๋ณด์๊ธฐ์, ์ด ๋ถ๋ถ์ ๋์ฑ ์์๋ณด์์ผํ ๊ฒ ๊ฐ์ต๋๋ค. -
model์์๋ ๊ทธ์ ๋ฐ์ดํฐ๋ฅผ ๊ด๋ฆฌํ๊ณ ๋ณ๊ฒฝํ๊ธฐ๋ง ํ๋ ๊ฒ์ธ๊ฐ? โ ๋ชจ๋ธ ํจํค์ง์๋ ์ปจํธ๋กค๋ฌ์ ๋ทฐ์ ์ฝ๋๊ฐ ๋ค์ด๊ฐ์ง ์๋๋ก ํ๋ ๊ฒ์ด ์์น์ด๋ผ๊ณ ํฉ๋๋ค. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ๋ชจ๋ธ์ ๋ฐ์ดํฐ๋ฅผ ์ ๊ฐ์ง๊ณ ์๋ ๊ฒ์ด ๊ฐ์ฅ ์ค์ํ๋ค๊ณ ์๊ฐํ์ฌ ๋๋ถ๋ถ์ ๋ก์ง์ ์ปจํธ๋กค๋ฌ์์ ์คํํ์ต๋๋ค.
2. ๊ฐ์ฒด์งํฅ์ ์ฌ์ค๊ณผ ์คํด
1์ฃผ์ฐจ์ ๋ง์ ๋ถ๋ค์ ๊ธ๋ค์ ๋ณด๋ ์ค, ๊ฐ์ฒด์งํฅ์ ์ฌ์ค๊ณผ ์คํด๋ผ๋ ์ฑ
์ด ๋ง์ด ์ธ๊ธ๋จ์ ์๊ฒ ๋์์ต๋๋ค. ์ฒ์์๋ ๋ณ ๊ด์ฌ์ด ์์์ผ๋, ์๋ ์๋ ์ฌ์ค์ ๋ง์ด ๊นจ๋ถ์์ด์ฃผ๋ ์ข์ ์ฑ
์ด๋ผ๋ ๋ฆฌ๋ทฐ๋ฅผ ๋ณด๊ณ ์กฐ๊ธ ๊ด์ฌ์ด ์๊ฒผ์ต๋๋ค.
2์ฃผ์ฐจ๋ถํฐ ์คํฐ๋๋ค์ด ์ด๋ฆฌ๊ฒ ๋์๋๋ฐ, ๋ง์นจ ํด๋น ์ฑ ์ ์ฝ๊ณ ๋ฏธ์ ์ ์ ์ฉํด๋ณด๊ณ ์๋ก ์ฝ๋ ๋ฆฌ๋ทฐ๋ฅผ ์งํํ๋ ์คํฐ๋ ๋ํ ์ด๋ ค ๋ค์ด๊ฐ๊ฒ ๋์์ต๋๋ค.
์ด๋ฒ ์ฃผ์ฐจ์๋ 1,2,3 ์ฑํฐ๋ง์ ์ฝ์๋๋ฐ, ์ฐ์ ์ ์ ๋ง ํฅ๋ฏธ๋ก์ ์ต๋๋ค. ์ด๋ฌํ ์ฑ
์ ๋ณดํต ์ง๋ฃจํ๊ธฐ ๋ง๋ จ์ธ๋ฐ, ์ดํดํ๊ธฐ ์ฌ์ด ์ด์ํ ๋๋ผ์ ์จ๋ฆฌ์ค ์ด์ผ๊ธฐ๋ฅผ ์์๋ก ๋ค๋ฉฐ ์ค๋ช
ํด์ฃผ์ด ์ข์์ต๋๋ค.
๊ฐ์ฅ ์๋ฟ์๋ ๋ถ๋ถ์ ์ฌ์ค ๊ฐ์ฒด์งํฅ์ ์ค์ธ๊ณ๋ฅผ ๋ชจ๋ฐฉํ๋ ๊ฒ์ด ์๋๋ผ, ์ค์ธ๊ณ๋ฅผ ์ฐธ๊ณ ํ์ฌ ์๋ก์ด ์ธ๊ณ๋ฅผ ๋ง๋๋ ๊ฒ์ด๋ผ๋ ๊ตฌ์ ์ด์์ต๋๋ค.
๋๋ถ๋ถ์ ๋์์์ ๊ฐ์ฒด์ ๋ํด ์ค๋ช
์ ํ ๋์๋ ์ค์ธ๊ณ์ ์ฌ๋ฌผ ํน์ ๊ฐ๋
์ ๋ชจ๋ฐฉํ์ฌ ์ํํธ์จ์ด ์ธ๊ณ๋ก ๊ฐ์ ธ์จ๋ค๊ณ ๋งํฉ๋๋ค. ํ์ง๋ง ์ด๋ ๊ฐ์ฅ ํธ๋ฆฌํ๊ฒ ์ค๋ช
ํ ์ ์๋ ๋ฐฉ๋ฒ์ผ๋ฟ์ด๋ผ ์์ฃผ ์ฌ์ฉ๋๋ ๊ฒ์ด๊ณ , ๊ทธ๋ก ์ธํด ๊ฐ์ฒด์งํฅ์ ๋ํ ์คํด๊ฐ ์๊ฒจ๋๋ ๊ฒ์
๋๋ค.
์ค์ ๋ก ์ค์ธ๊ณ๋ฅผ ๋ชจ๋ฐฉํด์ ์ํํธ์จ์ด ์ธ๊ณ๋ฅผ ๋ง๋ ๋ค๋ฉด ์๋นํ ๋ถํธํ ์ ๋ค์ด ๋ง์ด ์๊ฒจ๋ฉ๋๋ค. ์๋ฅผ ๋ค์ด ์ค์ธ๊ณ์์ ์๋์ฐจ๋ฅผ ์์ง์ด๊ฒ ํ๊ธฐ ์ํด์๋, ๋ค์๊ณผ ๊ฐ์ ๊ณผ์ ์ด ํ์ํฉ๋๋ค.
- ์ฐจ ์ฃผ์ธ์ด ์๋์ฐจ ํค๋ฅผ ๊ฐ๊ณ ํ๊ด๋ฌธ์ ๋์ ๋ค.
- ์๋์ฐจ์ ํ์นํด ํค๋ก ์๋์ ๊ฑด๋ค.
- ์์ ์ ๋ฐ์ ์ฐจ๋ฅผ ์์ง์ธ๋ค.
ํ์ง๋ง ์ค์ ์ํํธ์จ์ด ์ธ๊ณ์์ ์ด๋ ๊ฒ ๊ตฌํํ์ง๋ ์๊ณ , ์ฐจ car๊ฐ ์์ง์ธ๋ค move ์ด๋ฐ์์ผ๋ก ํ๋์ ๋ฉ์๋๋ก ๊ตฌํํ๊ณค ํฉ๋๋ค.
์ฆ, ์ฌ๋ฌผ์ ์์ธํํ์ฌ ๋์ฑ ์ง๊ด์ ์ด๊ณ ํจ์จ์ ์ผ๋ก ์ฝ๋๋ฅผ ์ง๋ ๊ฒ์
๋๋ค.
์ด์ ๊ฐ์ด ๊ธฐ์กด์ ์๋ ์ ์ ์๊ฐ์ ๋ง์ด ๋ฐ๊พธ์ด์ฃผ๋ ์ฑ ์ด๊ธฐ์ ์ฌ๋ฏธ์๊ฒ ์ฝ์๊ณ , ํ๋ฆฌ์ฝ์ค๊ฐ ๋๋๋ ๊ธฐ๊ฐ๊น์ง ์ฝ์ผ๋ฉฐ ๊ณฑ์น์ ์๊ฐ์ ๋๋ค.
3. ํ ์คํธ ์ฝ๋
์ด๋ฒ 2์ฃผ์ฐจ์์ ๊ฐ์ฅ ํฐ ์ํ์ ํ ์คํธ ์ฝ๋์๋ ๊ฒ ๊ฐ์ต๋๋ค.
1์ฃผ์ฐจ์์๋ ํ๋์ ๊ธฐ๋ฅ ํน์ ๋ฉ์๋๋ฅผ ๊ตฌํํ ๋๋ง๋ค, ๋ฉ์ธ ๋ฉ์๋์์ ์ง์ ๊ฐ์ ๋ฃ์ด ์คํํด๋ณด๋ฉฐ ๋๋ฆ์ ํ ์คํธ๋ฅผ ์งํํ์์ต๋๋ค.
ํ์ง๋ง ์ด๋ ๊ฒ ํ๋ ๋ณด๊ธฐ๊ฐ ๋ถํธํ๊ณ , ์ฌ๋ฌ ๊ฐ์ ์๋ก ๊ด๋ จ์ด ์๋ ํ ์คํธ๊ฐ ๊ณ์ํด์ ๋์์ ์ด๋ฃจ์ด์ง๋ ์ํฉ์ด ๋ฐ์ํ์ต๋๋ค.
๊ทธ๋์ ์ด๋ฒ์๋ ๊ธฐ์กด์ ์๋ ํ
์คํธ ์ฝ๋์ ๋ํ์ฌ, utils์ validation ํจํค์ง์ ์๋ ๋ฉ์๋๋ค์ ๊ฒ์ฆํ ์ ์๋ ํ
์คํธ ์ฝ๋๋ฅผ ๊ฐ๊ฐ ์์ฑํ์ต๋๋ค.
๊ธฐ๋ฅ ๊ตฌํ์ ํ๊ณ ๋ฐ๋ก ํ ์คํธ ์ฝ๋๋ฅผ ์์ฑํด ๊ฒ์ฆ์ ํ๋, ๋ฐฉ๊ธ ์ ๊ฐ ์ง ์ฝ๋๊ฐ ์ณ๊ฒ ๋ ์ฝ๋์ธ์ง ๋ฐ๋ก ํ์ธํ ์ ์์์ต๋๋ค. ์๊ฐ์ ์กฐ๊ธ ๋ ๊ฑธ๋ฆฌ๊ธฐ๋ ํ์ง๋ง, ํ์ ๋ฉ์๋๊ฐ ์๋ชป๋์ด ์ ์ฒด์ ์ผ๋ก ์์ ํด์ผํ๋ ์ผ์ ๊ฑฐ์ ๋ฐ์ํ์ง ์์์ต๋๋ค.
ํ์ง๋ง ์ต์ข
run ํ
์คํธ์์ ์ค๋ฅ๊ฐ ๋ช ๊ฐ ๋ฐ์ํ์ฌ ๋๋ฒ๊น
์ ์งํ์ ํ๊ณ , ์ด ๊ณผ์ ์์ ํ
์คํธ ์ฝ๋์ ๋์์ธ ํจํด์ ํ์ ์ ์ ์์์ต๋๋ค. ์ด๋ ๋ถ๋ถ์์ ์ค๋ฅ๊ฐ ๋๋ ๊ฒ์ธ์ง ๋ฐ๋ก ํ์
ํ ์ ์์๊ณ , ๊ทธ ํ์ผ์ด ์ด๋ ์์น์ ์๋์ง ์๊ณ ์์ด ๋น ๋ฅธ ์ค๋ฅ ์์ ์ด ๊ฐ๋ฅํ์ต๋๋ค.
๊ฒฐ๊ตญ ๋ค์๊ณผ ๊ฐ์ด ํ ์คํธ ์ฝ๋๋ฅผ ๋ชจ๋ ํต๊ณผํ๋ฉฐ ์ ์๊ฐ์์ ์ ์ถํ ์ ์์์ต๋๋ค.
4. ์๊ฐ ๋ถ์กฑ
์์ ๋ชฉ ๊ทธ๋๋ก ์๊ฐ์ด ๋ง์ด ๋ถ์กฑํ์ต๋๋ค.
ํ์ ๊ณผ ์๋ฅด๋ฐ์ดํธ, ํ๋ก์ ํธ ๋ฑ์ ๋ณํํ๋ฉด์ ํ๋ค ๋ณด๋ ์ ๋๋ก ํ๋ฆฌ์ฝ์ค์ ์ง์คํ ์ ์๋ ์๊ฐ์ด ๋ฉฐ์น ๋์ง ์์์ต๋๋ค. ๋ง๊ฐ์ด ๋ค ๋์ด์๋ ๊ฑฐ์ ์ ๋ ์์ง ๋ชปํด์ ์์งํ ๋ง์์ผ๋ก ํฌ๊ธฐํด์ผํ๋ ํ๋ ์๊ฐ๋ ๋ค์์ต๋๋ค. ํ์ง๋ง ์ ์ถ์ด๋ผ๋ ํ์๋ ์๊ฐ์ผ๋ก ๋๊น์ง ์งํ์ ํ๊ณ , ๊ฒฐ๊ตญ ๋ชจ๋ ํ ์คํธ๋ฅผ ํต๊ณผํ์ ๋๋ ์ ๋ง ํฐ ๋ฟ๋ฏํจ์ ๋๊ผ์ต๋๋ค.
ํ๋ํ๋ ๊ตฌํํ ์์ ๊ธฐ๋ฅ๋ค์ด ๋ง์ง๋ง์ ๋ชจ์ฌ ํ๋์ ์ ํ๋ฆฌ์ผ์ด์ ์ด ๋์ด ๋์ํ ๋๋ ์ง๋ฆฟํ ๋๋๋ง์ ๋ค์์ต๋๋ค.
๋ณด์ํด์ผ ํ ๋ถ๋ถ๋ ๋ง๊ณ , ์๊ฐ ๋ถ์กฑ์ผ๋ก ์ธํด ์์ฌ์ด ์ ๋ ์ฐธ ๋ง์ ์ด๋ฒ์ฃผ์ฐจ ๋ฏธ์ ์ด์์ง๋ง, ๊ทธ๋๋ ๊ฒฐ๊ตญ์ ์ ์ ์ถ์ ํด๋์์ ์์๋ฅผ ๋๋ ค๊ณ ํฉ๋๋ค.
3,4 ์ฃผ์ฐจ๋ ๋์ฑ ๋์ด๋๊ฐ ์ฌ๋ผ๊ฐ ๊ฒ์ด๊ธฐ์, ์ ๋๋ก ์ง์คํ์ฌ ๋๋ผ ์ ์๋ ๊ธฐ๊ฐ์ ๊ฐ์ธ์ ์ผ๋ก ์ค์ ํด ์ ์์ํด์ผ๊ฒ ๋ค๋ ์๊ฐ์ด ๋ญ๋๋ค.
๐ก ๋ณด์ํด์ผ ํ ์
1. MVC ํจํด์ ์ดํด ๋ฐ ์๋ฌ
์์์ ์ ์ ๋ด์ฉ๊ณผ ๊ฐ์ด, ์ด๋ฒ ๋ฏธ์ ์์๋ MVC ํจํด์ ๋ํ ๋ง์ ๊ณ ๋ฏผ์ด ์์์ต๋๋ค. ๋ชจ๋ธ ๋ทฐ ์ปจํธ๋กค๋ฌ๋ก๋ง ํจํค์ง๋ฅผ ๊ตฌ์ฑํด ๊ฐ๋ฐํ๋ ๊ฒ์๋ ์กฐ๊ธ ํ๊ณ๊ฐ ์์์ ๋๊ผ์ต๋๋ค. ๊ทธ๋ ๊ธฐ์ ์ ๋ง์ ์ฌ๋๋ค์ด ์๋น์ค์ ๋๋ฉ์ธ ๋ํ ๋ง๋ค์ด ์ฌ์ฉํ๋์ง๋ฅผ ์ด๋ ดํ์ด๋๋ง ์๊ฒ ๋์์ต๋๋ค.
๊ทธ๋ ๊ธฐ์ 3์ฃผ์ฐจ ๋ฏธ์ ๋ถํฐ๋ MVC์ ๋ํ ํ์ต์ ๋์ฑ ์งํํ๋ฉฐ ๋๋ฉ์ธ๊ณผ ์๋น์ค ํจํค์ง๋ฅผ ์ถ๊ฐํ ๊ตฌ์กฐ๋ฅผ ์ฌ์ฉํด๋ณผ๊น ํฉ๋๋ค. ๋ฏธ์ํ ์๋ ์์ง๋ง, ์๋ก์ด ๊ฒ์ ๋์ ํ๋ ๊ฒ๋งํผ ๋น ๋ฅด๊ฒ ์ฑ์ฅํ๋ ์ผ์ ์๋ค๊ณ ์๊ฐํ์ฌ ๊ฒฐ์ ํ์์ต๋๋ค.
2. ํด๋์ค์ ๋ํ ์ดํด
์๋ฐ๋ ๊ฐ์ฒด์งํฅ์ธ์ด์ด๊ณ , ์ฌ๊ธฐ์ ํด๋์ค๋ ๋น ์ง ์ ์๋ ๋ถ๋ถ์ ๋๋ค.
๊ทธ๋งํผ ์ค์ํ๊ณ , ํ์ฌ ์ฝ๊ณ ์๋ ์ฑ ๋๋ถ์ ๋์ฑ ๋ง์ ํฅ๋ฏธ๋ฅผ ์ป์ ์ ์์์ต๋๋ค. ๋งค์ฃผ ์งํํ๋ ์คํฐ๋์์ ๋ง์ ์ธ์ฌ์ดํธ๋ฅผ ์ป๊ณ , ์ ๋ํ ํจ๊ป ๊ณต์ ํ๊ธฐ ์ํด์ ์ ํด์ง ์ฑํฐ๋ฅผ ์ฝ๊ณ ์ ๋ฆฌํ๋ ค ํฉ๋๋ค.
๋ํ ์ด๋ฒ 2์ฃผ์ฐจ์์ ์์ฌ์ ๋ ๋ถ๋ถ์ ๋ํด์๋ ๋ค์ ํ ๋ฒ ์๊ฐํด๋ณด๋ฉฐ, ํด๋์ค์ ๋ํ ๊ฐ๋ ์ ์กฐ๊ธ ๋ ์ ๋ฆฝํด๋ณด๋ ค ํฉ๋๋ค.
3. ํ ์คํธ ์ฝ๋ ์์ฑ์ ๋ํ ์ดํด ๋ฐ ์๋ฌ
์ด๋ฒ ๋ฏธ์
์์๋ ํ๋์ ๊ธฐ๋ฅ์ด ์๋๋ผ ๋ฉ์๋๋ฅผ ๊ตฌํํ ๋๋ง๋ค ํ
์คํธ ์ฝ๋๋ฅผ ์์ฑํ๊ณ , ๋ฉ์๋๋ feat์ผ๋ก, ํ
์คํธ ์ฝ๋๋ test๋ก ํ์ฌ ์ปค๋ฐ์ ๋ ๋ฒ์ฉ ํ์์ต๋๋ค. ํ์ง๋ง ํญ์ ์ต๋ํ ์๊ฒ ์ชผ๊ฐ๋ ๊ฒ๋ง์ด ๋ฅ์ฌ๋ ์๋๊ธฐ์, ์ด๋ ์ ๋์์ ์ปค๋ฐ์ ํด์ผ ํ๋์ง ์กฐ๊ธ ๋ ์๊ฐ์ด ํ์ํ ๊ฒ ๊ฐ์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ ํฌ๋น๋๊ป์๋ ๊ฐ๊ฐ์ด ์๋๋ผ ๋์ ๋ฌถ์ด ํ ๋ฒ์ ์ปค๋ฐํ๋ค๊ณ ํ๋.. ์ด ๋ถ๋ถ๋ ์ข ๋ ์์๋ณด์์ผ๊ฒ ์ต๋๋ค!
ํ ์คํธ ์ฝ๋ ์์ฑ์ด ์ฒ์์ด๋ค ๋ณด๋, ์ด๋ค ๊ธฐ๋ฅ๋ค์ด ์๋์ง๋ ์ ํํ ๋ชจ๋ฅด๊ณ ์ด๋ป๊ฒ ๋น๊ต๋ฅผ ํด์ผ ํ๋์ง๋ ์ ๋ชฐ๋์ต๋๋ค. ๋ค์์๋ ์กฐ๊ธ ๋ ์ข์ ํ ์คํธ ์ฝ๋๋ฅผ ์งค ์ ์๋๋ก ๋ ธ๋ ฅํด์ผ๊ฒ ์ต๋๋ค.
4. ์๋ฐ ์ฝ๋ ์ปจ๋ฒค์ ์์ง
1์ฃผ์ฐจ๋ถํฐ ์๋ฐ ์ปจ๋ฒค์ ์ด๋ผ๋ ๊ฒ์ ์๊ฒ ๋๋ฉด์, ์ด๊ฒ์ ์ ํด์ผ ํ๊ณ ์ผ๋ง๋ ์ค์ํ ๊ฒ์ธ์ง๋ฅผ ์๊ฒ ๋์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด๋ฅผ ์ ์ฉํ์ฌ ์ฝ๋๋ฅผ ์ง ๋ค๋ฉด, ๋์ฑ ํจ์จ์ ์ธ ์์ฌ์ํต์ด ๊ฐ๋ฅํด์ง๋ฉฐ, ๋ฐ๋๋ก ํ์ง ์๋๋ค๋ฉด ์ค๋ ฅ์์ ๋์๋ ์ฝ๊ฒ ์ด๊ฒ์ด ํฐ๊ฐ ๋ ๊ฒ์ ๋๋ค.
์งํค๋ ค๊ณ ๋ ธ๋ ฅ์ ํ์์ง๋ง, ์์ง ๋์น ๋ถ๋ถ๋ ๋ง์ ๊ฒ ๊ฐ์ต๋๋ค. ์๋ฐ๋ฅผ ์ฃผ๋ ฅ์ผ๋ก ์ฌ์ฉํ๋ ๋ฐฑ์๋ ๊ฐ๋ฐ์๋ก์ ์ด๋ฌํ ์ญ๋์ ํผ์ ์ด์ด ๋๊ธฐ ๋๋ฌธ์, ์กฐ๊ธ์ ๋ฒ๊ฑฐ๋ก์๋ ์์ ์ตํ๋ ค๊ณ ๋ ธ๋ ฅํ๋ ค ํฉ๋๋ค.
5. depth๋ฅผ ์๊ฒ ๋ง๋๋ ๊ฒ์ ์ต์ํด์ง๊ธฐ
1์ฃผ์ฐจ์๋ ์์์ง๋ง, 2์ฃผ์ฐจ๋ถํฐ๋ ๋ฉ์๋์ depth๋ฅผ 2๊น์ง๋ง ํ์ฉํ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด๋ ์ ๊ฐ ์ฝ๋๋ฅผ ์ง๋ ๋ฐ์ ๋ง์ ๊ฑธ๋ฆผ๋์ด์์ต๋๋ค.
์ ์๊ฐ์ผ๋ก๋ ๋ฐ๋ณต๋ฌธ์ด ๋ ๋ฒ ๋ค์ด๊ฐ์ผ depth๊ฐ 2๋ผ๊ณ ์๊ฐํ์ง๋ง, ๊ทธ๋ ์ง ์์์ต๋๋ค. ๋ค์ฌ์ฐ๊ธฐ๋ฅผ ๊ธฐ์ค์ผ๋ก ํ๋ ๊ฒ์ผ๋ก, ๋ฐ๋ณต๋ฌธ ๋๋ ์กฐ๊ฑด๋ฌธ๋ง ํ๋๋ผ๋ ์ฌ์ฉํ๋ฉด ํด๋น ์กฐ๊ฑด์ ๋ง์ถ ์ ์์์ต๋๋ค.
๊ฐ๋จํ ๋ฉ์๋์๋ ๋ณ ๋ฌธ์ ๊ฐ ์์์ง๋ง, ์ ์ฒด ๋ก์ง์ ์งํํ๋ ์ํฉ์์๋ ์ฝ๋๋ฅผ ์ญ ์ ์ง ๋ชปํ๋ ์ฌ๋ฌ ๊ณ ๋ฏผ์ด ์๊ฒจ๋ฌ์ต๋๋ค. ๊ฒฐ๊ตญ ์๊ฐ์ ๋ง์ด ์๋ชจ๋์์ง๋ง, ์ ์ด๋ ๊ฒ ํด์ผํ๋์ง์ ๋ํด์๋ ์กฐ๊ธ์ ์๊ฒ ๋ ๊ฒ ๊ฐ์ต๋๋ค.
depth๋ฅผ ์ค์ด๋ ค๊ณ ํ๋ค๋ณด๋ ์์ฐ์ค๋ ์์ ๊ธฐ๋ฅ๋ณ๋ก ๋ฉ์๋๋ฅผ ๋ง๋ค๊ฒ ๋์๊ณ , ์ด๋ ์ฐํ
์ฝ์์ ํ๋์ ๋ฉ์๋์์ ํ ๊ฐ์ง ์ผ๋ง ํ๋๋ก ์ต๋ํ ์๊ฒ ๋ง๋ค์ด๋ผ.๋ผ๋ ์์ฒญ์ ๋ถํฉํ ์ ์์์ต๋๋ค.
๋ฉ์๋๊ฐ ๋ง์์ ธ ํ์ ํ๊ธฐ ํ๋ค ๊ฒ์ ๊ณ ๋ คํด, ๋์ฑ ์ง๊ด์ ์ด๊ณ ๋ป์ ๋ง๋ ์๋ช ์ ๊ณ ๋ฏผํ๊ฒ ๋์๊ณ ์ด ๋ํ ์ ์๊ฒ ๋ง์ ๋์์ด ๋ ๊ฒ ๊ฐ์ต๋๋ค.
6. HashMap์ ๋ํ ์ดํด
2์ฃผ์ฐจ ๋ฏธ์
์์๋ ๊ฐ ์๋์ฐจ์ ์ด๋๊ฑฐ๋ฆฌ๋ฅผ ์ ์ฅํ๊ธฐ ์ํด์ HashMap์ ํ์ฉํด ๊ตฌํํ์์ต๋๋ค. ์๋์ฐจ์ ์ด๋ฆ๊ณผ, ๊ฐ๊ฐ์ ์ด๋๊ฑฐ๋ฆฌ๋ฅผ ์์์ผ ํ๊ณ ๋ณ๊ฒฝ๋ ํด์ผ ํ๊ธฐ์ ๋๋ฆ๋๋ก ๊ด์ฐฎ์ ํ๋จ์ด๋ผ๊ณ ์๊ฐํ์ต๋๋ค.
ํ์ง๋ง ํ ์คํธ๋ฅผ ๋๋ฆฐ ๊ฒฐ๊ณผ, ์๋ฌ๊ฐ ๋ฐ์ํ์ต๋๋ค. ์ ๋ ฅํ ์๋์ฐจ๋ค์ ์ด๋ฆ ์์์, ์ถ๋ ฅ ์์๊ฐ ๋ค๋ฅธ ๊ฒ์ด์์ต๋๋ค.
์ด๋ ํด์๋งต์ ์์๋ฅผ ๊ณ ๋ คํ์ง ์๋๋ค๋ ์ ์ ๊ฐ๊ณผํ ๊ฒ์ด์์ต๋๋ค. ์ด๋ฅผ ์์ง ๋ชปํด์ ๋นํฉํ๊ณ , ๊ฒฐ๊ตญ ์์๋ณด๊ณ ์์ ํ๋ ๋ฐ ์๊ฐ์ ๋ ์ฌ์ฉํ์ต๋๋ค.
๋ํ ์ต์ข
์ฐ์น์์ ์ด๋ ๊ฑฐ๋ฆฌ๋ฅผ ํ์
ํ๊ธฐ ์ํด ๊ณ ๋ฏผ์ ํ๋ค๊ฐ, values ์ค ์ต๋๊ฐ์ ๋ฐ๋ก ๋ฐํํด์ฃผ๋ ๋ฉ์๋๋ฅผ ์ฐพ๊ฒ ๋์์ต๋๋ค. ์ด๋ Collections.max ์๊ณ , ์์ผ๋ก ๊ธฐ์ตํด๋๋ฉด ์ข์ ๊ฒ ๊ฐ๋ค๋ ์๊ฐ์ด ๋ค์์ต๋๋ค.
7. ๋ฆฌํฉํ ๋ง์ ๋ ๋ง์ ์๊ฐ ์๊ธฐ
๋๋ถ๋ถ์ ์ฌ๋๋ค์ด ์ถ์ฒํ๋ ๊ฒ์ด, ์ฐ์ ๋น ๋ฅด๊ฒ ๋ง๋ ํ์ ๋ฆฌํฉํ ๋ง์ ๋ ๋ง์ ์๊ฐ์ ์์ผ๋ผ๋ ๊ฒ์ด์์ต๋๋ค. ํ์ง๋ง ์ ์ฑ๊ฒฉ์ ๋์ถฉ ๋ง๋ค๊ณ ๋ค์ ์์ ํ๋ ๊ฒ์ด ์ด๋ ค์ ๊ณ , ๊ฒฐ๊ตญ ๊ตฌํํ๋๋ฐ ์๊ฐ๋ณด๋ค ๋ ๋ง์ ์๊ฐ์ ์ฌ์ฉํ์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ทธ ๊ฒฐ๊ณผ ๋ฆฌํฉํ ๋ง์ ํ ์๊ฐ๊ณผ ์๋์ง๋ ๋ถ์กฑํ์ฌ ์ ๋๋ก ์งํํ์ง ๋ชปํ์ต๋๋ค.
๋ฌผ๋ก ์ด๋ฅผ ๋ฐ๋ก ๋ฐ๊พธ๊ธฐ๋ ํ๋ค๊ฒ ์ง๋ง, ์์ผ๋ก๋ ์ง๊ธ์ฒ๋ผ ๊ณ์ ์งํํ๋ค๋ฉด ์ต์ข
์ฝํ
์ ๊ฐ์๋ ๋์๊ฐ๊ธด ํ๋ ์ฐ๋ ๊ธฐ์กฐ์ฐจ ๋ง๋ค์ง ๋ชปํ ๊ฒ ๊ฐ๋ค๋ ์๊ฐ์ด ๋ญ๋๋ค.
8. ์ค๊ณ ๋ฐ ๋ฌธ์ํ ์๋ ์ฆ์ง
์์ ๋ด์ฉ๊ณผ ์ผ๋งฅ์ํตํฉ๋๋ค. ๊ธฐ๋ฅ ๋ชฉ๋ก์ ์์ธํ๊ฒ ์์ฑํ ๊ฒ์ ์ข์ผ๋, ์๊ฐ์ด ํ์ ๋ ์ํฉ์์๋ ์ด๋ ์ ๋ ๋์ด๊ฐ ์ค๋ ์์์ผ ํฉ๋๋ค. ํ์ง๋ง ์ด๋ฅผ ํ์ง ๋ชปํ์ฌ ์ด๋ฒ ์ฃผ์ฐจ์๋ ๋ฌธ์ํ์ ๋ง์ ์๊ฐ์ ์ฌ์ฉํ๊ฒ ๋์์ต๋๋ค.
๋ฌธ์ํ๋ฅผ ์์ฃผ ๊ผผ๊ผผํ ํ๊ณ ๋๋, ๊ธฐ๋ฅ์ ๊ตฌํํ๋ ๋ฐ๋ ์์น์ ๋ํ ๊ณ ๋ฏผ๋, ์๋ช ์ ๋ํ ๊ณ ๋ฏผ๋ ๋ง์ด ์ค์ ๊ฒ์ ๋ถ๋ช ์ฅ์ ์ด์์ต๋๋ค. ํ์ง๋ง ๋ชจ๋ ๊ฒ์ด ์ ๋จธ๋ฆฌ์์ ๋์จ ์ค๊ณ๋๋ก ํ๋ฌ๊ฐ์ง๋ ์์์ต๋๋ค. ๊ฒฐ๊ตญ ์ฝ๋๋ฅผ ์ง๋ฉฐ ์์ ์ ๊ณ์ํด์ ํ๊ฒ ๋์๊ณ , ์ด ๋ํ ๋ง์ ์๊ฐ์ด ์๋ชจ๋์์ต๋๋ค.
์๊ฐ์ด ๋ง์ ์ํฉ์ด๋ผ๋ฉด ์ง๊ธ์ฒ๋ผ ๋ฌธ์ํ๋ฅผ ์ด์ฌํ, ๊ทธ๋ฆฌ๊ณ ์์๊ฒ ํ๋ ๊ฒ๋ ์ข๋ค๊ณ ์๊ฐํฉ๋๋ค. ํ์ง๋ง ์ต์ข ์ฝํ ๋ 5์๊ฐ๋ง ์ฃผ์ด์ง๊ธฐ์, ์ง๊ธ์ ๋ฐฉ์๋ณด๋ค ๋ ๋น ๋ฅด๊ฒ ํ๋ ๋ฐฉ๋ฒ์ ์ฐพ์์ผํ ๊ฒ ๊ฐ์ต๋๋ค.
(2์ฃผ์ฐจ ๊นํ๋ธ : https://github.com/bbbang105/java-racingcar-6)