๋ชฉ๋กํ๋ก๊ทธ๋๋ฐ/Algorithm ์๊ณ ๋ฆฌ์ฆ (7)
Bibi's DevLog ๐ค๐
[Swift] ๊ทธ๋ํ์ ํ์ ์๊ณ ๋ฆฌ์ฆ DFS/BFS ๊ฐ์ฅ ๋์์ด ๋ ๊ธ.. https://nareunhagae.tistory.com/56 ๐ '์ด๊ฒ์ด ์ฝ๋ฉ ํ ์คํธ๋ค' ์ฑ ๋ ํจ๊ป ์ฐธ๊ณ ํด ์์ฑํ์ต๋๋ค. ๊ทธ๋ํ Graph ๊ทธ๋ํ์์๋ ๋ชจ๋ ๊ฐ์ฒด๋ ์ ์ (๋ ธ๋)๋ก ๋ํ๋ด๊ณ , ๋ชจ๋ ๊ด๊ณ๋ ๊ฐ์ ์ผ๋ก ๋ํ๋ธ๋ค. ๋ ธ๋ Node / ์ ์ Vertex ๊ทธ๋ํ์์ ๋ฐ์ดํฐ๋ฅผ ๋ด๋ ๋จ์. (๊ทธ๋ฆผ์์์ ๋๊ทธ๋ผ๋ฏธ = ๋ ธ๋) ๋ ๋ ธ๋๊ฐ ์ธ์ ํ๋คadjacent : ๋ ๋ ธ๋๊ฐ ๊ฐ์ ์ผ๋ก ์ฐ๊ฒฐ๋์ด ์์์ ์๋ฏธ ๊ฐ์ Edge ๋ ธ๋ ์ฌ์ด๋ฅผ ์๋ ์ . ๊ทธ๋ํ ํ์ : ํ๋์ ๋ ธ๋๋ฅผ ์์์ผ๋ก ๋ค์์ ๋ ธ๋๋ฅผ ๋ฐฉ๋ฌธํ๋ ๊ฒ ์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ์ค 1์ฐจ์ ๋ฐฐ์ด, 2์ฐจ์ ๋ฐฐ์ด ํ์ ๋ฌธ์ ๋ฅผ ๊ทธ๋ํ ํํ๋ก ์๊ฐํ๋ฉด ๋ฌธ์ ๋ฅผ ์ฝ๊ฒ ํ ์ ์๋ค. ๊ทธ๋ํ ํ..
[210701] Hello Coding ์๊ณ ๋ฆฌ์ฆ 4. ํต ์ ๋ ฌ ๋ถํ ์ ๋ณต divide and conquer : ๋ฌธ์ ํด๊ฒฐ ๋ฐฉ๋ฒ ์ค ๊ฐ์ฅ ์ ๋ช ํ ์ฌ๊ท์ ์๊ณ ๋ฆฌ์ฆ. ํน์ ์๊ณ ๋ฆฌ์ฆ(๊ธฐ์ )์ด ์๋, ๋ฌธ์ ๋ฅผ ํ๊ธฐ ์ํ ๋ฐฉ๋ฒ๋ก ์ด๋ค. ๋ถํ ์ ๋ณต์ ์ฆ๋ช - '์ ํด๋ฆฌ๋ ํธ์ ๋ฒ Euclid's algorithm' ์ฐธ๊ณ ํ๊ธฐ ์์ : ๋๋ถ๊ฐ ์ด๋ค ๋ ์ ๋๊ฐ์ ์ ์ฌ๊ฐํ ํ ์ง๋ก ๋๋๊ณ ์ถ์ ๋. ๋ถํ ์ ๋ณต์ผ๋ก ํธ๋ ๋จ๊ณ. ๊ธฐ๋ณธ ๋จ๊ณ๋ฅผ ์ฐพ๋๋ค. ์ด ๋ถ๋ถ์ ๊ฐ๋ฅํ ๊ฐ์ฅ ๊ฐ๋จํ ๋ฌธ์ ์ฌ์ผ ํ๋ค. ์ ์ฒด ๋ฌธ์ ๊ฐ ๊ธฐ๋ณธ ๋จ๊ณ๊ฐ ๋ ๋๊น์ง ๋๋๊ฑฐ๋ ์๊ฒ ๋ง๋ ๋ค. ๋ถํ ์ ๋ณต์์๋ ์ฌ๊ท ํจ์๋ฅผ ํธ์ถํ ๋ ๋ง๋ค ๋ฌธ์ ๋ฅผ ์๊ฒ ๋๋์ด์ผ ํ๋ค. ์์ Q. ๋ฐฐ์ด์ ๋ชจ๋ ์ซ์๋ฅผ ๋ํ ํฉ๊ณ ๊ตฌํ๊ธฐ. ๋ฐ๋ณต๋ฌธ์ด ์๋ ์ฌ๊ท ํจ์๋ฅผ ์ฌ์ฉํ๋ค. ๊ธฐ๋ณธ ๋จ๊ณ๋ฅผ ์ฐพ๋๋ค. (..
3์ฅ. ์ฌ๊ท ์์ํ๊ธฐ์ ์์ ์์ ์ฝ๋ ์ง์ ์คํํด ๋ณด๊ธฐ ์ ์ด๋ ํ ๋ฒ์ ์ฐํ๊ณผ ์ข ์ด๋ฅผ ๊ฐ์ง๊ณ ์ฌ๊ทํจ์์ ์คํ ๊ณผ์ ์ ๋ฐ๋ผ๊ฐ ๋ณด๊ธฐ. ์์ฌ์ฝ๋(pseudocode, ์๋์ฝ๋) : ๋ฌธ์ ์ ํ์ด ๋ฐฉ๋ฒ์ ๊ฐ๋จํ ์ฝ๋๋ก ์ค๋ช ํ ๊ฒ. ์ค์ ๋ก ๋์ํ์ง ์์ ์ฌ๊ท recursion ์ฌ๊ท ํจ์๊ฐ ์๊ธฐ ์์ ์ ํธ์ถํ๋ ๊ฒ. ๋ฌธ์ : ์ฌ๋ฌ ๊ฒน์ผ๋ก ํฌ์ฅ๋ ์์๋ค์ด ์๊ณ , ๊ทธ ์์๊ฐ ๋ ๋ค๋ฅธ ์์๋ค ์์ ๋ค์ด ์๋ค. ๋ช ๊ฐ์ผ์ง ๋ชจ๋ฅด๋ ์์๋ค ์ค ์ด์ ๊ฐ ๋ค์ด์๋ ์์๋ฅผ ์ฐพ์์ผ ํ๋ค. ๋ฐฉ๋ฒ 1 : ๋ฐ๋ณต๋ฌธ ์ฌ์ฉํ๊ธฐ ๋ด๋ถ๋ฅผ ํ์ธํ ์์๋ฅผ ์์๋๋๋ค(=์์ ๋๋ฏธ). ์์ ํ๋๋ฅผ ์ง์ด์ ๋ด๋ถ๋ฅผ ํ์ธํ๋ค. ๋ง์ฝ ์์ ์์๊ฐ ์๋ค๋ฉด, ํ์ธํ ์์ ๋๋ฏธ์ ๋์ ๋ค 2๋ก ๋์๊ฐ๋ค. ๋ง์ฝ ์์ ์ด์ ๊ฐ ์๋ค๋ฉด ์์ ์ ์ข ๋ฃํ๋ค. ์๋๋ ์ ๊ณผ์ ์ ๋..
[210630] (์ด์ ์ ์ด์ด์ ์์ฑ) Hello Coding ์๊ณ ๋ฆฌ์ฆ 2์ฅ. ์ ํ ์ ๋ ฌ ๋ฐฐ์ด, ์ฐ๊ฒฐ๋ฆฌ์คํธ, ์ ํ ์ ๋ ฌ์ ๊ดํด ๊ณต๋ถํ๋ค. ๋ฉ๋ชจ๋ฆฌ๊ฐ ๋์ํ๋ ๋ฐฉ๋ฒ ์ปดํจํฐ ๋ฉ๋ชจ๋ฆฌ์ ๋์ ๋ฐฉ์. ์์ฒญ๋๊ฒ ๋ง์ ์๋์ด ์๊ณ , ๊ฐ ์๋์๋ ์ฃผ์๊ฐ ๋ถ์ด ์๋ค. ๋ฉ๋ชจ๋ฆฌ์ ๋ฌด์ธ๊ฐ๋ฅผ ์ ์ฅํ ๋๋ ์ปดํจํฐ์๊ฒ ๊ณต๊ฐ์ ์์ฒญํ๋ค. ์ฌ๋ฌ ๊ฐ์ ์์๋ฅผ ์ ์ฅํ ๋, '๋ฐฐ์ด'๊ณผ '๋ฆฌ์คํธ' ๋ ๋ฐฉ์ ์ค ํ๋๋ฅผ ์ ํํ๋ค. ๋ฐฐ์ด vs ์ฐ๊ฒฐ ๋ฆฌ์คํธ ๋ฐฐ์ด (array) ์น๊ตฌ๋ค๊ณผ ์ํ๋ฅผ ๋ณด๋ฌ ๊ฐ์ ์๋ฆฌ๋ฅผ ์ฐพ์ ๋์ ๋น์ ํ ์ ์๋ค. 3๋ช ์ด์ ์ข์์ ์์ฝํ๋๋ฐ ํ ๋ช ์ด ๋ ์๋ค๋ฉด, 4๋ช ์ด์ ๋ถ์ด ์์ ์ ์๋ ์ข์์ผ๋ก ๋ค ๊ฐ์ด ์ฎ๊ฒจ ์์์ผ ํจ ๋ฐฐ์ด์ ๋ชจ๋ ์์๋ ๊ฐ์ ์๋ฃํ์ด์ด์ผ ํ๋ค. ์ฅ์ : READ๊ฐ ๋น ๋ฅด๋ค. ์ธ๋ฑ์ค index : ๋ฐฐ์ด์์๋..
[210628] Hello Coding ์๊ณ ๋ฆฌ์ฆ 1์ฅ. ์๊ณ ๋ฆฌ์ฆ์ ์๊ฐ ๋ค์ด๊ฐ๋ ๊ธ ์๊ณ ๋ฆฌ์ฆ : ์ด๋ค ์ผ์ ํ๊ธฐ ์ํ ๋ช ๋ น์ ์งํฉ ์ฑ๋ฅ ์ฌ๋ฌ ์๊ณ ๋ฆฌ์ฆ๋ค์ ์ฅ๋จ์ ๊ณผ ์ฐจ์ด์ ์ ์ดํดํ๊ณ ์ธ ์ค ์์์ผ ํ๋ค. ๋ค๋ฅธ ์๋ฃ๊ตฌ์กฐ / ์๊ณ ๋ฆฌ์ฆ์ ์ฐ๋ ๊ฒ๋ง์ผ๋ก๋ ์ฑ๋ฅ์ด ํฌ๊ฒ ๋ฌ๋ผ์ง ์ ์๋ค. ๋จ์ ํ์ simple search ํ์ ๋ฌธ์ ๋ฅผ ํ ๋ ์ฌ์ฉ. ๋์ : ๋จ์ํ ์์ ํ๋ํ๋๋ฅผ ๋ง๋์ง ์๋์ง ์ผ์ผ์ด ํ์ธํ๋ ๋ฐฉ์ n๊ฐ์ ์์ ๋ฆฌ์คํธ์์ ์ต๋ n๋ฒ๋ง์ ์ ๋ต์ ์ฐพ์ ์ด์ง ํ์ binary search ํ์ ๋ฌธ์ search ๋ฅผ ํ ๋ ์ฌ์ฉ. ์ด์ง ํ์์ ๋งค ๋จ๊ณ๋ง๋ค ์ ๋ฐ์ ํ๋ณด๋ค์ ์์จ ์ ์๋ค. input : ์ ๋ ฌ๋ ์์ ๋ฆฌ์คํธ output : ์ํ๋ ์์๊ฐ ์์ผ๋ฉด ๊ทธ ์์น๋ฅผ ๋ฐํ. ์๋๋ฉด null ๋ฐํ. ๋์ ์ ..
ํ๋ก๊ทธ๋๋จธ์ค Lv1 - ์์ฐ์ ๋ค์ง์ด ๋ฐฐ์ด๋ก ๋ง๋ค๊ธฐ class Solution { public int[] solution(long n) { String nStr = Long.toString(n); String[] nStrArr = nStr.split(""); int length = nStr.length(); int[] answer = new int[length]; for (int i = 0; i < length; i++) { answer[i] = Integer.parseInt(nStrArr[length-i-1]); } return answer; } }ํผ์์๋ ์ ํด๋๋์? : ๋ฌด์ํ ๊ตฌ๊ธ๋ง ๋์ โญ ๋งํ ๋ถ๋ถ : ํจ์จ์ฑ์ ์ํด ๋ต์ ๋ฃ์ด์ง ์ซ์๋ ๋นผ์ผ ํ ๊ฒ ๊ฐ์๋ฐ ์ด๋ป๊ฒ ๋นผ์ง? ๋์๋ฆฌ * 10์ ๋ฐฐ์ ..
[Hello Coding] ์๊ณ ๋ฆฌ์ฆ 1์ฅ. ์๊ณ ๋ฆฌ์ฆ์ ์๊ฐ ์๊ณ ๋ฆฌ์ฆ์ด๋? : ์ด๋ค ์ผ์ํ๊ธฐ ์ํ ๋ช ๋ น์ ์งํฉ. ํนํ ๋ค๋ฅธ ์ฝ๋๋ณด๋ค ์๋๋ฅผ ๋น ๋ฅด๊ฒ ํ๊ฑฐ๋, ๋ฌธ์ ๋ฅผ ํ๊ธฐ ์ํ ๊ฒ. ์๊ณ ๋ฆฌ์ฆ์ ์ฑ๋ฅ ์ฌ๋ฌ ์๊ณ ๋ฆฌ์ฆ๋ค์ ์ฅ๋จ์ ๊ณผ ์ฐจ์ด์ ์ ์์์ผ ํ๋ค. ๋จ์ํ ๋ค๋ฅธ ์๋ฃ๊ตฌ์กฐ/์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ๋ ๊ฒ๋ง์ผ๋ก๋ ์ฑ๋ฅ์ด ํฌ๊ฒ ๋ฌ๋ผ์ง๋ค. ์ด์ง ํ์ ํ์ ๋ฌธ์ Search : ์ฃผ์ด์ง ๋ฐ์ดํฐ์์ ์ํ๋ ํญ๋ชฉ์ ์ด๋ค ๋ฐฉ๋ฒ์ผ๋ก ์ฐพ์ ๊ฒ์ธ๊ฐ. ์) 1๋ถํฐ 100๊น์ง์ ์ซ์๋ค ์ค '78'์ด๋ผ๋ ์ซ์ ์ฐพ๊ธฐ ๋จ์ ํ์ Simple search : ์ฒ์๋ถํฐ ํ๋์ฉ ์์๋๋ก ํญ๋ชฉ์ ํ์ ์) 1, 2, 3, 4, ... 77, 78 ์์ผ๋ก ํ์ํด 78์ ์ฐพ๋๋ค. N๊ฐ์ ์์๋ฅผ ๊ฐ์ง ๋ฆฌ์คํธ์์ ์ต๋ N๋ฒ ๋ง์ ๋ต์ ์ฐพ์ ์ ์๋ค...