๐ฅ CS/Algorithm (16) ์ธ๋ค์ผํ ๋ฆฌ์คํธํ [Algorithm/Swift] ํ๋ก๊ทธ๋๋จธ์ค(Lv.3) - ๊ธฐ์ง๊ตญ ์ค์น ์๋ ํ์ธ์ ์ ์ธ์ ๋๋ค:) ๊ฝค๋ ์ค๋๋ง์ด์ฃ ..? ์ธ๊ฐ์ด ์ค์ผ ๊ฒ์ผ๋ฅผ๊น์ ์ค๋๋ง์ ํฐ์คํ ๋ฆฌ๋ฅผ ๋ค์ด์๋๋ ํผ๋์ ์ ๊ธ์ด ์์ฒญ ๋ง๋ค์.. ๋ค๋ค ๊พธ์คํ ๊ธฐ๋ก ๋๋จํด..๋ณธ๋ฐ๊ฒ ์ต๋๋ค.. ๋๋ถ์ ์ ๋ ์๊ทน๋ฐ๊ณ ๋ค์ ์ด์ฌํ ํฐ์คํ ๋ฆฌ ๊ธ์ ์ด์ฌํ ์ช๋ณด๋ ค๊ณ ํฉ๋๋ค!!!! ์ค๋์ PS ๊ธฐ๋ก์ ๋จ๊ฒจ๋ณด๋ ค๊ณ ํ๋๋ฐ ๊ฐ์๊ธฐ Lv3..? ํฐ์คํ ๋ฆฌ์ ํ์ด๊ธฐ๋ก์ ์ํ์ง๋ง.. ๋จธ ํ๋ค๋ณด๋ ๋ ๋ฒจ3๊น์ง ์๋ค์? ๋ ๋ฒจ3 ๋ฌธ์ ๋ฅผ ํ๋ค๋ณด๋ ํ์คํ ํน์ ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํด์ผํ๊ฑฐ๋, ํจ์จ์ฑ๊น์ง ๊ณ ๋ คํด์ผํ๋ ๋ฌธ์ ๊ฐ ๋ง์์ ๊ธฐ๋ก์ ํ์์ฑ์ ๋๊ผ์ต๋๋ค. ๊ทธ๋์ ์์ผ๋ก ๋ฌธ์ ํ์ด๊ณผ์ ์์ ์๋ก ์๊ฒ ๋๋ ์ข์ ์ ๊ทผ ๋ฐฉ๋ฒ์ด๋ ํ์ด ๋ฐฉ๋ฒ๋ค์ ๊ธ๋ก ๋จ๊ฒจ๋ณด๋ ค๊ณ ํฉ๋๋ค! ์ ์ PS ํจ์จ์ฑ์ ์ํด ๋ฌธ์ ์ ๋ํ ์ค๋ช ์ ์๋ตํ๊ณ ์ ๊ทผ ๋ฐ ํ์ด ์์ฃผ๋ก ๊ธฐ๋กํด๋๊ฐ๋๋ก ํ ๊ฒ์๐๐.. [Algorithm/Swift] ์ด์ง ํ์(Binary Search) ์๋ ํ์ธ์ ์ ์ธ์ ๋๋ค :) ์ค๋์ ํ์ ์๊ณ ๋ฆฌ์ฆ ์ค ์ด์ง ํ์(Binary Search)์ด ๋ฌด์์ธ์ง ์์๋ณด๊ณ Swift ์ฝ๋๋ก ๊ตฌํ๊น์ง ํด๋ณด๋ ค๊ณ ํฉ๋๋ค. ์ด์ง ํ์ ์๊ณ ๋ฆฌ์ฆ์ ๊ฒฝ์ฐ ํ์์ ๋ฒ์๊ฐ ์์ฃผ ํฐ ์ํฉ์์ ์๋๋ฅผ ๋ด์ ํ์ํ ์ ์๋ ๋ฐฉ๋ฒ์ด๋ ์ ์ ๋ฆฌํด๋๋ฉด ์ ์ฉํ๊ฒ ์ฌ์ฉํ ์ ์์ ๊ฒ ๊ฐ์ต๋๋ค. ๋ฐ๋ก ์์ํด๋ณผ๊ฒ์! ์ด์ง ํ์์ด๋? ๋จผ์ , ์ด์ง ํ์์ด ์ ํ์ํ ๊น์?? ๋ฆฌ์คํธ ๋ด์์ ์ํ๋ ๋ฐ์ดํฐ๋ฅผ ์ฐพ๊ธฐ ์ํด ๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ ํ์ ๋ฐฉ๋ฒ์ธ ์์ฐจ ํ์ ๋ฐฉ๋ฒ๊ณผ ๋น๊ตํ๋ฉฐ ์ด์ง ํ์์ ์ฌ์ฉํด์ผ ํ๋ ์ด์ ์ ๋ํด ์์๋ด ์๋ค. ์์ฐจ ํ์ ์์ฐจ ํ์์ด๋ ๋ฆฌ์คํธ ์์ ์๋ ํน์ ํ ๋ฐ์ดํฐ๋ฅผ ์ฐพ๊ธฐ ์ํด ์์์๋ถํฐ ๋ฐ์ดํฐ๋ฅผ ํ๋์ฉ ์ฐจ๋ก๋๋ก ํ์ธํ๋ ๋ฐฉ๋ฒ์ ๋๋ค. ๋ณดํต ์ ๋ ฌ๋์ง ์์ ๋ฆฌ์คํธ์์ ๋ฐ์ดํฐ๋ฅผ ์ฐพ์์ผ ํ ๋ ์ฌ์ฉํ๊ฒ.. [Algorithm/Swift] ํ๋ก๊ทธ๋๋จธ์ค(Lv.2) - ๋ฌด์ธ๋ ์ฌํ ์๋ ํ์ธ์ ์ ์ธ์ ๋๋ค! ํ๋ก๊ทธ๋๋จธ์ค์ ์ต๊ทผ ์ถ๊ฐ๋ ์ฐ์ต๋ฌธ์ ์ค ํ๋์ธ ๋ฌด์ธ๋ ์ฌํ์ด๋ผ๋ ๋ฌธ์ ๋ฅผ ํ์ด๋ณด์๋๋ฐ์, ๋ฌธ์ ํด๊ฒฐ ์์ด๋์ด๋ฅผ ์ฝ๋๋ก ๊ตฌํํ๋ ๊ฒ์ด ๊ฝค๋ ์ด๋ ค์ ๋ ๋ฌธ์ ์ด๊ธฐ๋ ํ๊ณ , Swift ํ์ด๊ฐ ์์ง ์๋ ๊ฒ ๊ฐ์์ ํ ๋ฒ ์ ๋ฆฌํด๋ณด๋ ค๊ณ ํฉ๋๋ค! ๋ฌด์ธ๋์ ์ ๊ตณ์ด ์ฌํ์ ๊ฐ๋์ง๋ ๋ชจ๋ฅด๊ฒ ์ง๋ง ์ํผ ์์ํด๋ณผ๊ฒ์..ใ ๋ฌธ์ ๋งํฌ ํ๋ก๊ทธ๋๋จธ์ค ์ฝ๋ ์ค์ฌ์ ๊ฐ๋ฐ์ ์ฑ์ฉ. ์คํ ๊ธฐ๋ฐ์ ํฌ์ง์ ๋งค์นญ. ํ๋ก๊ทธ๋๋จธ์ค์ ๊ฐ๋ฐ์ ๋ง์ถคํ ํ๋กํ์ ๋ฑ๋กํ๊ณ , ๋์ ๊ธฐ์ ๊ถํฉ์ด ์ ๋ง๋ ๊ธฐ์ ๋ค์ ๋งค์นญ ๋ฐ์ผ์ธ์. programmers.co.kr ๋ฌธ์ ์ค๋ช ๋ฉ๋ฆฌ๋ ์ฌ๋ฆ์ ๋ง์ ๋ฌด์ธ๋๋ก ์ฌํ์ ๊ฐ๊ธฐ ์ํด ์ง๋๋ฅผ ๋ณด๊ณ ์์ต๋๋ค. ์ง๋์๋ ๋ฐ๋ค์ ๋ฌด์ธ๋๋ค์ ๋ํ ์ ๋ณด๊ฐ ํ์๋ผ ์์ต๋๋ค. ์ง๋๋ 1 x 1ํฌ๊ธฐ์ ์ฌ๊ฐํ๋ค๋ก ์ด๋ฃจ์ด์ง .. [Algorithm/Swift] ๋์ ๊ณํ๋ฒ(Dynamic Programming) ์๋ ํ์ธ์ ์ ์ธ์ ๋๋ค! ์ค๋์ ์๊ณ ๋ฆฌ์ฆ ๊ฐ๋ ์ค ๋์ ๊ณํ๋ฒ(Dynamic Programming)์ ๋ํด ์ ๋ฆฌํด๋ณด๋ ค๊ณ ํฉ๋๋ค. ๋์ ๊ณํ๋ฒ์ด ๋ฌด์์ธ์ง ์ ๋ฆฌํด๋ณด๊ณ , ๋์ ๊ณํ๋ฒ์ ๋ํ์ ์ธ ์์ ์ธ ๋ฌธ์ ๋ฅผ ํตํด ์ ์ฉ๊น์ง ํด๋ณด๋๋ก ํ ๊ฒ์! ๋์ ๊ณํ๋ฒ(Dynamic Programming, DP) ๋ค์ด๋๋ฏน ํ๋ก๊ทธ๋๋ฐ(์ค์ฌ์ DP)๋ผ๊ณ ๋ ๋ถ๋ฆฌ๋ ๋์ ๊ณํ๋ฒ์ ํฐ ๋ฌธ์ ๋ฅผ ์๊ฒ ๋๋๊ณ , ๊ฐ์ ๋ฌธ์ ๋ผ๋ฉด ํ ๋ฒ์ฉ๋ง ํ์ด ๋ฌธ์ ๋ฅผ ํจ์จ์ ์ผ๋ก ํด๊ฒฐํ๋ ์๊ณ ๋ฆฌ์ฆ ๊ธฐ๋ฒ์ ๋๋ค. ๋์ ๊ณํ๋ฒ์์๋ ๋ฉ๋ชจ์ด์ ์ด์ (Memoization) ๊ธฐ๋ฒ์ด ํต์ฌ์ด๋ผ๊ณ ํ ์ ์๋๋ฐ์! ๋ฉ๋ชจ์ด์ ์ด์ ๊ธฐ๋ฒ์ด๋, ํ ๋ฒ ๊ตฌํ ๊ฒฐ๊ณผ๋ฅผ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ์ ์ฅํด๋๊ณ ๊ฐ์ ์์ ๋ค์ ํธ์ถํด ์ ์ฅํ ๊ฒฐ๊ณผ๋ฅผ ๊ทธ๋๋ก ๊ฐ์ ธ์ค๋ ๊ธฐ๋ฒ์ ์๋ฏธํฉ๋๋ค. ๋ฉ๋ชจ์ด์ ์ด์ ์ ๊ฐ์ ์ ์ฅํ๋.. [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)๋ ๊น์ด ์ฐ์ ํ์์ด๋ผ๊ณ ๋ ๋ถ๋ฅด๋ฉฐ, ๊ทธ๋ํ์์ ๊น์ ๋ถ๋ถ์ ์ฐ์ ์ ์ผ๋ก ํ์ํ๋ ์๊ณ ๋ฆฌ์ฆ์ ๋๋ค. ๊ทธ๋ ๋ค๋ฉด, ๊ทธ๋ํ๋ ์ด๋ค ๊ตฌ์กฐ์ธ์ง ๋ถํฐ ์์์ผ .. ์ด์ 1 2 ๋ค์