๐ป/Algorithm (6) ์ธ๋ค์ผํ ๋ฆฌ์คํธํ ํ(Heap) ์์ ์ด์ง ํธ๋ฆฌ์ ์ผ์ข ์ผ๋ก ์ฐ์ ์์ ํ๋ฅผ ์ํ์ฌ ๋ง๋ค์ด์ง ์๋ฃ๊ตฌ์กฐ ์ต๋๊ฐ๊ณผ ์ต์๊ฐ์ ์ฝ๊ฒ ์ถ์ถํ ์ ์๋ ๊ตฌ์กฐ ์ต๋ํ๊ณผ ์ต์ํ ์์_์๋ผํ ์คํ ๋ค์ค์ ์ฒด ์์๋ค์ ๋๋์ผ๋ก ๋น ๋ฅด๊ณ ์ ํํ๊ฒ ๊ตฌํ๋ ๋ฐฉ๋ฒ for(int i = 2; i ์ต๋ ๊ณต์ฝ์_์ ํด๋ฆฌ๋ ํธ์ ๋ฒ : 2๊ฐ์ ์์ฐ์ ๋๋ ์ ์์ ์ต๋๊ณต์ฝ์๋ฅผ ๊ตฌํ๋ ์๊ณ ๋ฆฌ์ฆ์ ํ๋์ด๋ค. ํธ์ ๋ฒ์ด๋ ๋ง์ ๋ ์๊ฐ ์๋ก ์๋๋ฐฉ ์๋ฅผ ๋๋์ด์ ๊ฒฐ๊ตญ ์ํ๋ ์๋ฅผ ์ป๋ ์๊ณ ๋ฆฌ์ฆ์ ๋ํ๋ธ๋ค. 2๊ฐ์ ์์ฐ์ a, b์ ๋ํด์ a๋ฅผ b๋ก ๋๋ ๋๋จธ์ง๋ฅผ r์ด๋ผ ํ๋ฉด(๋จ, a>b), a์ b์ ์ต๋๊ณต์ฝ์๋ b์ r์ ์ต๋๊ณต์ฝ์์ ๊ฐ๋ค. ์ด ์ฑ์ง์ ๋ฐ๋ผ, b๋ฅผ r๋ก ๋๋ ๋๋จธ์ง r’๋ฅผ ๊ตฌํ๊ณ , ๋ค์ r์ r’๋ก ๋๋ ๋๋จธ์ง๋ฅผ ๊ตฌํ๋ ๊ณผ์ ์ ๋ฐ๋ณตํ์ฌ ๋๋จธ์ง๊ฐ 0์ด ๋์์ ๋ ๋๋๋ ์๊ฐ a์ b์ ์ต๋๊ณต์ฝ์์ด๋ค. private static int gcd(int a, int b) { if (b == 0) return a; return gcd(b, a % b); } char to int / ASCII CODE Char > int char - '0'; ASCII CODE (int)char ์์ ํ์/DFS/BFS ์์ ํ์ (๋ธ๋ฃจํธ ํฌ์ค) ๊ฐ๋ฅํ ๋ชจ๋ ๊ฒฝ์ฐ์ ์๋ฅผ ๋ค ์๋ํด ๋ต์ ์ฐพ๋ ๋ฐฉ๋ฒ ์ ํํ๊ณ ํ์คํ๊ฒ ๋ต์ ์ฐพ์ ์๋ ์์ง๋ง, ์๊ฐ์ด ์ค๋ ๊ฑธ๋ฆฐ๋ค. ๋ชจ๋ ๊ฒฝ์ฐ์ ์๋ฅผ ๊ตฌํ๋ ๋ฌธ์ ๊ฐ์ ๋ถ๋ถ์์ ๋ง์ด ์ฌ์ฉ๋๋ ์๊ณ ๋ฆฌ์ฆ - ์์ ํ์ ๊ธฐ๋ฒ ์ข ๋ฅ DFS(๊น์ด ์ฐ์ ํ์) : ๋ฃจํธ ๋ ธ๋์์ ์์ํด์ ๋ค์ ๋ถ๊ธฐ(branch)๋ก ๋์ด๊ฐ๊ธฐ ์ ์ ํด๋น ๋ถ๊ธฐ๋ฅผ ์๋ฒฝํ๊ฒ ํ์ํ๋ ๋ฐฉ๋ฒ ์ด๋ค ๋ ธ๋๋ฅผ ๋ฐฉ๋ฌธํ์๋์ง ์ฌ๋ถ๋ฅผ ๋ฐ๋์ ๊ฒ์ฌ 1. ์ํ ํธ์ถ ์ด์ฉ(์๊ธฐ ์์ ์ ํธ์ถํ๋์ํ ์๊ณ ๋ฆฌ์ฆ์ ํํ) 2. ๋ช ์์ ์ธ ์คํ ์ฌ์ฉ ๋ช ์์ ์ธ ์คํ์ ์ฌ์ฉํ์ฌ ๋ฐฉ๋ฌธํ ์ ์ ๋ค์ ์คํ์ ์ ์ฅํ์๋ค๊ฐ ๋ค์ ๊บผ๋ด์ด ์์ ํ๋ค. ์ฌ์ฉํ๋ ๊ฒฝ์ฐ: ๋ชจ๋ ๋ ธ๋๋ฅผ ๋ฐฉ๋ฌธ ํ๊ณ ์ ํ๋ ๊ฒฝ์ฐ์ ์ด ๋ฐฉ๋ฒ์ ์ ํํ๋ค. ๊น์ด ์ฐ์ ํ์(DFS)์ด ๋๋น ์ฐ์ ํ์(BFS)๋ณด๋ค.. Stack/Queue/Deque/PriorityQueue Stack Last-In, First-Out -> LIFO ๋์ค์ ๋ค์ด๊ฐ ๊ฒ์ด ๋จผ์ ๋์ค๋ ๊ตฌ์กฐ push: ๋ฐ์ดํฐ ์ฝ์ pop: ๋ฐ์ดํฐ ์กฐํ + ์ญ์ peek: ๋ฐ์ดํฐ ์กฐํ clear: ๋ฐ์ดํฐ ์ ์ฒด ์ญ์ size: stack ์ฌ์ด์ฆ empty: stack ๋น์ด์๋์ง ์ฌ๋ถ contains: ํน์ ๋ฐ์ดํฐ ํฌํจ ์ฌ๋ถ search: ํน์ ๋ฐ์ดํฐ ์์น ๋ฐํ Queue First-In, First-Out -> FIFO ๋จผ์ ๋ค์ด๊ฐ ๊ฒ์ด ๋จผ์ ๋์ค๋ ๊ตฌ์กฐ LinkedList๋ก ์์ฑ ex) Queue queue = new LinkedList(); add / offer: ๋ฐ์ดํฐ ์ฝ์ remove / poll: ๋ฐ์ดํฐ ์ญ์ peek: ๋ฐ์ดํฐ ์กฐํ clear: ๋ฐ์ดํฐ ์ ์ฒด ์ญ์ Deque queue์ ์์ชฝ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ฝ์ .. ์ด์ 1 ๋ค์