๐ฅ CS (30) ์ธ๋ค์ผํ ๋ฆฌ์คํธํ [Algorithm/Swift] ํ๋ก๊ทธ๋๋จธ์ค(Lv.1) - [1์ฐจ] ๋คํธ๊ฒ์ ์๋ ํ์ธ์ ์ ์ธ์ ๋๋ค!! 2018 KAKAO BLIND RECRUITMENT ๋ฌธ์ ๋ก ์ถ์ ๋์๋ ๋คํธ๊ฒ์ ๋ฌธ์ ๋ฅผ ํ์ด๋ดค๋๋ฐ์, ํ๋ก๊ทธ๋๋จธ์ค ๊ธฐ์ค Level1 ๋ฌธ์ ์ด์ง๋ง ์ ๋ ์ ๊ทผํ๋๋ฐ ๊ฝค๋ ์ค๋๊ฑธ๋ ธ๊ธฐ ๋๋ฌธ์.. ์ด๋ป๊ฒ ํ์๋์ง ๋ณต๊ธฐํ๋ฉฐ ์ ๋ฆฌํด๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค!! ๋ฌธ์ ๋งํฌ ํ๋ก๊ทธ๋๋จธ์ค ์ฝ๋ ์ค์ฌ์ ๊ฐ๋ฐ์ ์ฑ์ฉ. ์คํ ๊ธฐ๋ฐ์ ํฌ์ง์ ๋งค์นญ. ํ๋ก๊ทธ๋๋จธ์ค์ ๊ฐ๋ฐ์ ๋ง์ถคํ ํ๋กํ์ ๋ฑ๋กํ๊ณ , ๋์ ๊ธฐ์ ๊ถํฉ์ด ์ ๋ง๋ ๊ธฐ์ ๋ค์ ๋งค์นญ ๋ฐ์ผ์ธ์. programmers.co.kr ๋ฌธ์ ์ค๋ช ์นด์นด์คํก ๊ฒ์๋ณ์ ํ๋ฐ๊ธฐ ์ ๊ท ์๋น์ค๋ก ๋คํธ ๊ฒ์์ ์ถ์ํ๊ธฐ๋ก ํ๋ค. ๋คํธ ๊ฒ์์ ๋คํธํ์ ๋คํธ๋ฅผ ์ธ ์ฐจ๋ก ๋์ ธ ๊ทธ ์ ์์ ํฉ๊ณ๋ก ์ค๋ ฅ์ ๊ฒจ๋ฃจ๋ ๊ฒ์์ผ๋ก, ๋ชจ๋๊ฐ ๊ฐ๋จํ ์ฆ๊ธธ ์ ์๋ค. ๊ฐ ์ ์ฌํ ๋ฌด์ง๋ ์ฝ๋ฉ ์ค๋ ฅ์ ์ธ์ ๋ฐ์ ๊ฒ์์.. [Algorithm/Swift] ํ๋ก๊ทธ๋๋จธ์ค(Lv.1) - ์ต๋๊ณต์ฝ์์ ์ต์๊ณต๋ฐฐ์ ์๋ ํ์ธ์ ์ ์ธ์ ๋๋ค!! ์ค๋์ ํ๋ก๊ทธ๋๋จธ์ค ๋ฌธ์ ๋ฅผ ํ๋ค๊ฐ ์๊ฒ๋ ์ต๋๊ณต์ฝ์, ์ต์๊ณต๋ฐฐ์ ๊ตฌํ๋ ๋ฐฉ๋ฒ์ ๋ํด ๊ธฐ๋กํด๋ณด๋ ค๊ณ ํฉ๋๋ค! ํ๋ก๊ทธ๋๋จธ์ค์ ์ต๋๊ณต์ฝ์์ ์ต์๊ณต๋ฐฐ์ ๋ฌธ์ ๋ ๋ ๋ฒจ1์ ๊ฐ๋จํ ๋ฌธ์ ์ด์ง๋ง ์ต๋๊ณต์ฝ์, ์ต์๊ณต๋ฐฐ์๋ฅผ ๊ตฌํ๋ ๊ณต์(?)๊ณผ ๊ฐ์ ๊ฐ๋ ์ ์๊ณ ์์ง ์๋ค๋ฉด ์ฝ๊ฒ ํ ์ ์๋ ๋ฌธ์ ์ด๊ธฐ ๋๋ฌธ์ ๋ค๋ฅธ ๋ฌธ์ ๋ค์์์ ์์ฉ์ ๋๋นํด ์ ๋ฆฌํ๊ณ ๋์ด๊ฐ๋ ค๊ณ ํฉ๋๋ค!! ๋ฌธ์ ๋งํฌ ํ๋ก๊ทธ๋๋จธ์ค ์ฝ๋ ์ค์ฌ์ ๊ฐ๋ฐ์ ์ฑ์ฉ. ์คํ ๊ธฐ๋ฐ์ ํฌ์ง์ ๋งค์นญ. ํ๋ก๊ทธ๋๋จธ์ค์ ๊ฐ๋ฐ์ ๋ง์ถคํ ํ๋กํ์ ๋ฑ๋กํ๊ณ , ๋์ ๊ธฐ์ ๊ถํฉ์ด ์ ๋ง๋ ๊ธฐ์ ๋ค์ ๋งค์นญ ๋ฐ์ผ์ธ์. programmers.co.kr ๋ฌธ์ ์ค๋ช ๋ ์๋ฅผ ์ ๋ ฅ๋ฐ์ ๋ ์์ ์ต๋๊ณต์ฝ์์ ์ต์๊ณต๋ฐฐ์๋ฅผ ๋ฐํํ๋ ํจ์, solution์ ์์ฑํด ๋ณด์ธ์. ๋ฐฐ์ด์ ๋งจ ์์ ์ต.. [Algorithm/Swift] BFS(๋๋น ์ฐ์ ํ์) Swift๋ก ๊ตฌํํด๋ณด๊ธฐ ์๋ ํ์ธ์ ์ ์ธ์ ๋๋ค:) ์ค๋์ ์ ๋ฒ ์๊ณ ๋ฆฌ์ฆ ํฌ์คํ (DFS)์ ์ด์ด BFS(๋๋น ์ฐ์ ํ์)์ ๋ํด ์ ๋ฆฌํด๋ณด๋ ค ํฉ๋๋ค! ์์ํ๊ธฐ ์ ์, ํ์ ์๊ณ ๋ฆฌ์ฆ ์ค ํ๋์ธ BFS๋ฅผ ์ดํดํ๋ ค๋ฉด ์ฐ์ ๊ทธ๋ํ์ ๋ํ ์ดํด๋ถํฐ ํ์ํ๋ ํน์ ๊ทธ๋ํ์ ๋ํด ์ ๋ชจ๋ฅด์ ๋ค๋ฉด ์๋ ๋งํฌ๋ก ๊ฑธ์ด๋ ์ด์ ํฌ์คํ ์ ์ฐธ๊ณ ํด์ฃผ์๋ฉด ์ข์ ๊ฒ ๊ฐ์ต๋๋ค!! [Algorithm/Swift] DFS(๊น์ด ์ฐ์ ํ์) Swift๋ก ๊ตฌํํด๋ณด๊ธฐ ์์ฆ ๋ผ๋ ์ฑ ์ผ๋ก ์๊ณ ๋ฆฌ์ฆ ๊ฐ๋ ๋ค์ ํ๋์ฉ ๋ฟ์๊ณ ์๋๋ฐ์, ์ด ์ฑ ์ด ํ์ด์ฌ ์ธ์ด๋ฅผ ๊ธฐ์ค์ผ๋ก ์ค๋ช ๋์ด์์ด์ ๊ฐ๋ ์ ํ์ตํ๊ณ , ์์ ๋ ์ค์ ๋ฌธ์ ๋ค์ Swift์ธ์ด๋ก ํ์ดํด๋ณด๋ ๋ฐฉ์์ผ๋ก ์ฐจ๊ทผ janechoi.tistory.com BFS BFS(Breadth First Search)๋ '๋๋น ์ฐ์ ํ์'์ด๋ผ๋ ์๋ฏธ.. [Algorithm/Swift] DFS(๊น์ด ์ฐ์ ํ์) Swift๋ก ๊ตฌํํด๋ณด๊ธฐ ์์ฆ ๋ผ๋ ์ฑ ์ผ๋ก ์๊ณ ๋ฆฌ์ฆ ๊ฐ๋ ๋ค์ ํ๋์ฉ ๋ฟ์๊ณ ์๋๋ฐ์, ์ด ์ฑ ์ด ํ์ด์ฌ ์ธ์ด๋ฅผ ๊ธฐ์ค์ผ๋ก ์ค๋ช ๋์ด์์ด์ ๊ฐ๋ ์ ํ์ตํ๊ณ , ์์ ๋ ์ค์ ๋ฌธ์ ๋ค์ Swift์ธ์ด๋ก ํ์ดํด๋ณด๋ ๋ฐฉ์์ผ๋ก ์ฐจ๊ทผ์ฐจ๊ทผ ๊ณต๋ถํด๊ฐ๊ณ ์์ต๋๋ค! ๊ฐ๋ ์ ๊ณต๋ถํ๊ณ Swift ์ธ์ด๋ก ๋ฐ๊ฟ๋ณด๋ ๊ณผ์ ์ ์ ๋ฆฌํด๋๋ฉด ์ข์ ๊ฒ ๊ฐ์์ ํ๋์ฉ ์ ๋ฆฌํด๋ณด๋ ค๊ณ ํฉ๋๋ค! ์ค๋์ ์๊ณ ๋ฆฌ์ฆ์์ ๊ฐ์ฅ ์ค์ํ ๊ฐ๋ ๋ค ์ค ํ๋์ธ ํ์ ์๊ณ ๋ฆฌ์ฆ, ๊ทธ ์ค์์๋ DFS(๊น์ด ์ฐ์ ํ์)์ ๊ฐ๋ ์ ์ ๋ฆฌํด๋ณด๊ณ , ์ฑ ์ ๊ฐ๋จํ ์์ ๋ฅผ Swift ์ธ์ด๋ก ๋ฐ๊ฟ์ DFS๋ฅผ ๊ตฌํํด๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค! DFS DFS(Depth-First Search)๋ ๊น์ด ์ฐ์ ํ์์ด๋ผ๊ณ ๋ ๋ถ๋ฅด๋ฉฐ, ๊ทธ๋ํ์์ ๊น์ ๋ถ๋ถ์ ์ฐ์ ์ ์ผ๋ก ํ์ํ๋ ์๊ณ ๋ฆฌ์ฆ์ ๋๋ค. ๊ทธ๋ ๋ค๋ฉด, ๊ทธ๋ํ๋ ์ด๋ค ๊ตฌ์กฐ์ธ์ง ๋ถํฐ ์์์ผ .. [๋คํธ์ํฌ] ์ธํฐ๋ท์ด๋? ๋ณธ ๊ฒ์๊ธ์ KOCW ์ดํ์ฌ์๋ํ๊ต ์ด๋ฏธ์ ๊ต์๋์ ๊ฐ์๋ฅผ ๋ฃ๊ณ ์ ๋ฆฌํ ๋ด์ฉ์ ๋๋ค. ๊ฒ์๊ธ์ ํฌํจ๋๋ ์ด๋ฏธ์ง ์๋ฃ ๋ํ ํด๋น ๊ฐ์์ ํฌํจ๋ ๊ฐ์ ์๋ฃ์ ๋๋ค. ์ธํฐ๋ท์ด๋? ์ธํฐ๋ท์ ๊ตฌ์ฑ์์ ์ธํฐ๋ท์ ๊ฐ์ฅ์๋ฆฌ์๋ ์ฌ์ฉ์ ์ปดํจํฐ์ ์๋ฒ๊ฐ ์๋๋ฐ, ์ด๋ฅผ host ํน์ end system์ด๋ผ๊ณ ํฉ๋๋ค. ๋คํธ์ํฌ์์ ์ปดํจํฐ๋ฅผ ์ปดํจํฐ๋ผ ๋ถ๋ฅด์ง ์๊ณ host ํน์ end system์ด๋ผ๊ณ ๋ถ๋ฅด๋ ์ด์ ๋ ์ฌ์ฉ์ ์ปดํจํฐ์์ application program์ ์คํํ๊ณ ์๊ธฐ ๋๋ฌธ์, ๋ค์ ๋งํ๋ฉด ์ ํ๋ฆฌ์ผ์ด์ ์ ํธ์คํ ํ๊ณ ์๊ธฐ ๋๋ฌธ์ด๋ฉฐ ๋คํธ์ํฌ์ ๊ฐ์ฅ์๋ฆฌ(end)์ ์์นํ๊ณ ์๊ธฐ ๋๋ฌธ์ ๋๋ค. ๋คํธ์ํฌ์ ์ค์๋ถ์๋ ๋ผ์ฐํฐ ๋๋ ์ค์์น๋ผ๊ณ ๋ถ๋ฆฌ๋ ํน์ํ ์ฅ๋น๋ค์ด ์์ต๋๋ค. ๋ผ์ฐํฐ๋ ์ฌ์ฉ์์ ๋ฉ์์ง๊ฐ ๋ชฉ์ ์ง๋ฅผ ์ฐพ์๊ฐ๋๋ก ํ๋ ์ญ.. [Swift] DI(์์กด์ฑ ์ฃผ์ ) in Swift ์์กด์ฑ(Dependency) ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ์์ ์์กด์ฑ(Dependency)์ ์๋ก ๋ค๋ฅธ ๊ฐ์ฒด ์ฌ์ด์ ์์กด ๊ด๊ณ๊ฐ ์๋ค๋ ๊ฒ์ ๋งํฉ๋๋ค. ์ฆ, ์์กดํ๋ ๊ฐ์ฒด๊ฐ ์์ ๋๋ฉด, ๋ค๋ฅธ ๊ฐ์ฒด๋ ์ํฅ์ ๋ฐ๋๋ค๋ ๊ฒ์ ๋๋ค. ์์๋ก ์๋์ ์ฝ๋๋ฅผ ๋ด ์๋ค. struct Coffee { func drink() { print("์ปคํผ๋ฅผ ๋ง์ ๋ค") } } struct Programmer { private let coffee = Coffee() func startProgramming() { self.coffee.drink() } } Programmer๊ฐ์ฒด๋ Coffee๊ฐ์ฒด๋ฅผ ์ธ์คํด์ค๋ก ์ฌ์ฉํ๊ณ ์์ผ๋ฏ๋ก, Programmer๊ฐ์ฒด์ startProgramming()์ด ํธ์ถ๋๊ธฐ ์ํด์๋ Coffee ๊ตฌ์กฐ์ฒด๊ฐ ํ์ํฉ๋๋ค. ์ด ๋ P.. ์ด์ 1 2 3 4 ๋ค์