Algorithm/BOJ


1. ๋ฌธ์ ์ดํด ์ ์ผ ๋จผ์ ์ ๋งคํ๋ ๋ถ๋ถ์ ๋ก๋ด์ฒญ์๊ธฐ์ ์์น ์๋ค. ์ง๋์ ๋ถ์ชฝ์์๋ถํฐ r๋ฒ์งธ, ์์ชฝ์์๋ถํฐ c๋ฒ์งธ๋ก ์์นํ ์นธ์ด ๋ก๋ด์ฒญ์๊ธฐ์ ์์น๋ก ์ฃผ์ด์ก๋๋ฐ, ๋ฒฝ์๋ ๋ก๋ด์ฒญ์๊ธฐ๊ฐ ์กด์ฌํ ์ ์์ผ๋ ์ฒซ๋ฒ์งธ ํ ์คํธ์ผ์ด์ค๋ฅผ ๋ณด๊ณ r์ ๋ฒ์๊ฐ [0:N), c์ ๋ฒ์๊ฐ [0:M)๋ผ๋ ๊ฒ์ ์ง์ํ ์ ์์๋ค. ๊ทธ ๋ค์์ 2-b์ ์ค๋ช ์ ์ ๋๋ก ์ดํดํ์ง ๋ชปํ๋ค. ์ง๋ฌธ๊ฒ์ ๊ฒ์ํ์ ํตํด "1๋ฒ์ผ๋ก ๋์๊ฐ๊ฑฐ๋ ํ์ง"ํ์ง ์๊ณ 2a๋ฒ ๋จ๊ณ๊ฐ ์ฐ์์ผ๋ก 4๋ฒ ์คํ๋๋ ๊ฒ์ ์ ์ ์์๋ค. ๋ํ ์ด ์กฐ๊ฑด์ ํ์ฌ ์์น์์ ๋์๋จ๋ถ ๋ชจ๋ (๋ฒฝ or ์ฒญ์ํ ๊ณต๊ฐ์ด ์์) ๊ฒฝ์ฐ๋ฅผ ๋ํ๋ธ๋ค. ์ฌ๊ธฐ๊น์ง ์ดํดํ๋๋ฐ ์ง์ง ์ค๋ ๊ฑธ๋ ธ๋ค....ใ 2. ๋ฌธ์ ํ์ด static class Position { int r, c, d; public Po..


public static int specialAward(int row, int col, int n) { if(n == 1) { return arr[row][col]; } int mid = N/2; PriorityQueue pq = new PriorityQueue(); pq.offer(specialAward(row, col, mid)); pq.offer(specialAward(row, col+mid, mid)); pq.offer(specialAward(row+mid, col, mid)); pq.offer(specialAward(row+mid, col+mid, mid)); pq.poll(); return pq.poll(); } ๋ณด์๋ง์ ์ฌ๊ท ๋ฌธ์ ๋ผ๊ณ ์๊ฐํด์ recursion ๋ฉ์๋๋ฅผ ๋ง๋ค์ด ์ ์ถํ์ง๋ง ๋ฉ๋ชจ..


์ด ๋ฌธ์ ๋ ๊ฐ์ฅ ๊ธด ์ฆ๊ฐํ๋ ๋ถ๋ถ ์์ด4(https://www.acmicpc.net/problem/14002)์์ ๋ฒ์๋ง ๋ฌ๋ผ์ง ๋ฌธ์ ์ด๋ค. ์ผ๋จ ์ ๋ ฅ๊ฐ์ด 1,000,000์ด๋ฏ๋ก DP๋ก ํ๊ฒ ๋ ๊ฒฝ์ฐ 1,000,000์ ์ ๊ณฑ์ ํ๋ฉด... ๋ฌด์กฐ๊ฑด ์๊ฐ์ด๊ณผ๊ฐ ๋ ๊ฒ์ด๋ค. ์ด๋ถํ์์ ์ด์ฉํ์ฌ ์๊ฐ๋ณต์ก๋๋ฅผ O(N logN)๋ก ๋ฎ์ถฐ์ผ ํ๋ค. 14002๋ฒ ๋ฌธ์ ๋ฅผ ํ ๋ ์ด๋ถ ํ์์ ์ด์ฉํด์ ๊ตฌํด๋ดค๋๋ฐ ์ ์๊ตฌํด์ ธ์ DP๋ก ๋ฐ๊ฟจ๋๋ฐ... ์ด ๋ฌธ์ ๋ฅผ ์ฝ 2-3์๊ฐ ๋์ ๋๋๋๋ค...ใ ใ ์ธ๋ฑ์ค๋ฅผ ์ด์ฉํด์ผ ๋ ๊ฒ ๊ฐ๋ค๋ ๊ฒ์ ์์์ฑ๋๋ฐ ์ ์ถํ๋ฉด ๋ฐ๋ก๊ฐ ๊ณ์๊ณ์ ๋์๋ค...ํํ ๊ฒฐ๊ตญ G๋์ ํ์ ๋น๋ ธ๋ค... https://dragon-h.tistory.com/35 [๋ฐฑ์ค 14003: JAVA] ๊ฐ์ฅ ๊ธด ์ฆ๊ฐํ๋ ๋ถ๋ถ ์์ด ..


๊ฐ์ฅ ๊ธด ์ฆ๊ฐํ๋ ๋ถ๋ถ ์์ด์ 5๊น์ง ์๋ค. 3๊น์ง์์ ๋ค๋ฅธ ์ ์ ๋ถ๋ถ ์์ด์ ์ถ๋ ฅํ๋ ๊ฒ. LIS๋ฅผ ๊ตฌํ๋ ๋ฐฉ๋ฒ์ 3๊ฐ์ง๊ฐ ์๋ค. 1. ์์ ํ์ - O(N^2) 2. DP - O(N^2) 3. ์ด์งํ์ ํ์ฉ - O(N logN) ์์ ํ์๊ณผ DP๋ ์๊ฐ๋ณต์ก๋๊ฐ ๊ฐ์ง๋ง DP๋ก ํธ๋ ๋ฐฉ๋ฒ์ด ํจ์ฌ ๊ฐ๊ฒฐํ๋ค. ๊ฐ์ฅ ๊ธด ์ฆ๊ฐํ๋ ๋ถ๋ถ ์์ด3๊น์ง๋ ์ด์งํ์์ ํ์ฉํ๋ ๋ฐฉ๋ฒ์ผ๋ก ํ์๋ค. ํ์ง๋ง ์ด ๋ฌธ์ ๋ ์ด์งํ์์ผ๋ก ํ ์ ์๋ค. ์ด์งํ์์ ํ์ฉํ๋ ๋ฐฉ๋ฒ์ LIS์ ๊ธธ์ด๋ ๊ตฌํ ์ ์์ง๋ง, ๋ถ๋ถ ์์ด์ ์์๋ฅผ ๊ตฌํ ์ ์๊ธฐ ๋๋ฌธ์... (๊ตฌํ ์ ์์๋ค...! 2022.04.06 - [์๊ณ ๋ฆฌ์ฆ/BOJ] - [๋ฐฑ์ค] 14003. ๊ฐ์ฅ ๊ธด ์ฆ๊ฐํ๋ ๋ถ๋ถ ์์ด5 - Java ์ด ๊ธ์ ์ฐธ๊ณ ํ์๊ธธ...) ๋ฐ๋ผ์ ์ด ๋ฌธ์ ๋ D..


๋น์ฐํ ์๊ฐ์ด๊ณผ๊ฐ ๋์๋ค^^ N์ด ์ต๋ 3,000,000์ด๊ณ k์ ์ต๋ 3000์ด๋ฏ๋ก ์์ ํ์์ ํ๋ฉด 3,000,000 * 3,000๋ฒ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ ์ฐพ์์ผ ํ๋ค. 1์๊ฐ๋์ ๊ณ ๋ฏผํ๋ค๊ฐ ์๊ณ ๋ฆฌ์ฆ ๋ถ๋ฅ๋ฅผ ๋ดค๋ค... ํฌํฌ์ธํฐ๋ ๋์ ์ ์ถฉ ์์ง๋ง ์ฌ๋ผ์ด๋ฉ๋์ด๋ ์ฒ์ ๋ค์ด๋ด์ ๊ตฌ๊ธ์ ์ฐพ์๋ดค๋ค. k = 4 ์ด๋ฏ๋ก 0๋ฒ์งธ๋ถํฐ 3๋ฒ์งธ๊น์ง ์ด๋ฐฅ์ ์ข ๋ฅ๋ฅผ ๊ด๋ฆฌํ๋ค. ๊ทธ๋ฆฌ๊ณ start๋ 0, end๋ 3์ ๊ฐ๋ฆฌํจ๋ค. ๋ค์ ๋จ๊ณ๋ 0๋ฒ์งธ ์ด๋ฐฅ์ ๊ด๋ฆฌํ๋ ๋ถ๋ถ์์ ์ ๊ฑฐํ๊ณ start ๊ฐ์ 1 ์ฆ๊ฐ์์ผ์ฃผ๊ณ , end ๊ฐ์ 1 ์ฆ๊ฐ์์ผ end๋ฒ์งธ ์ด๋ฐฅ์ ๊ด๋ฆฌํ๋ ๋ถ๋ถ์ ์ถ๊ฐํ๋ค. ๊ทธ๋ฌ๋ฉด 7-9-7-30 ์์ 9-7-30-2 ๋ค์์ผ๋ก ๋์ด๊ฐ ๋ ์ ๋์ ์๋ ์ด๋ฐฅ๋ค๋ง..


1. ํ์ฌ ๊ณ๋จ์ ์ฌ๋ผ์ฌ ๋ ๋ ์นธ์ ์ฌ๋ผ์์ ๊ฒฝ์ฐ ๋ ๊ณ๋จ ์ ์ ์ ์ ์ค ์ต๋๊ฐ๊ณผ ํ์ฌ ๊ณ๋จ์ ์ ์๋ฅผ ๋ํ๋ค. F[k][0] = Math.max(F[k-2][0], F[k-2][1]) + values[k]; 2. ํ์ฌ ๊ณ๋จ์ ์ฌ๋ผ์ฌ ๋ ํ ์นธ์ ์ฌ๋ผ์์ ๊ฒฝ์ฐ ์ ๊ณ๋จ์ ์ฌ๋ผ๊ฐ์์ ๋ ํ ์นธ ๋ฐ๊ณ ์ฌ๋ผ๊ฐ ์ํ์ฌ์ผ ํ๋ฏ๋ก, ์ ๊ณ๋จ์ ํ์นธ ๋ฐ๊ณ ์ฌ๋ผ๊ฐ์ ๋ ์ ์์ ํ์ฌ ๊ณ๋จ์ ์ ์๋ฅผ ๋ํ๋ค. F[k][1] = F[k-1][0] + values[k]; ์ฝ๋๋ ์๋์ ๊ฐ๋ค. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class BJ_2576_๊ณ๋จ์ค๋ฅด๊ธฐ { public stat..


1. ์ด์ ์ง์์ RGB ์ค์์ ์ ํํ ์์ ์ ์ฅํด๋๋๋ค. 2. ํ์ฌ ์ง์ ์์น ํ ๋, ์ด์ ์ง์์ ์ ํํ ์๊ณผ ๊ฐ์ง ์์ ๊ฒ ์ค ์ต์๊ฐ์ธ ์์ ์น ํ๋ค. → F[k] = F[k-1] + Min( ์ด์ ์ง์์ ์ ํํ ์๊ณผ ๊ฐ์ง ์์ ๊ฒ๋ค ) ์์ ์ฒ๋ผ ํ๊ฒ๋๋ฉด ๊ฐ์ฅ ์์ ๋ฌธ์ ์ธ F(1)์ด ๋ช ํํ์ง ์์์ง๋ค๋ ๋ฌธ์ ๊ฐ ์๊ธด๋ค... ๊ทธ๋ฆฌ๊ณ ํ์ฌ์ ์ ํ์ด ์ต์๊ฐ์ด๋๋ผ๋ ์ ์ฒด์ ํด๊ฐ ์ต์๊ฐ ๋๋ค๋ ๋ณด์ฅ์ ํ ์ ์๋ค...ใ F[k][0] = Min(F[k-1][1], F[k-1][2] ) + RGB[k, 0]; F[k][1] = Min(F[k-1][0], F[k-1][2] ) + RGB[k, 1]; F[k][2] = Min(F[k-1][0], F[k-1][1] ) + RGB[k, 2]; ํ์ฌ ์ง์ ์์น ํ ๋ RG..


์ ๊ทผ๋ฐฉ๋ฒ์ ์์ ๋ชป ์ฐพ๊ฒ ๋ ๋ฌธ์ ...! ๊ฑฐ์ 1์๊ฐ 30๋ถ๋์ ๋ฉ ๋๋ฆฌ๊ณ ์์๋ค...ใ ใ ์๋ ์น์ฆ ๋ชจ์์์ (0, 7)์ c๋ฅผ ๊ธฐ์ค์ผ๋ก ํ๋ฐฉ ํ์์ ํตํด c๊ฐ ๋๋ ์ขํ๋ฅผ ๋ชจ๋ ์ฐพ์ bfs๋ฅผ ๋๋ฆด ์๊ฐ์ด์๋๋ฐ... ๋์ ํ c๊ฐ ๋๋ ์ขํ๋ฅผ ๊ตฌํ๋ ๋ฐฉ๋ฒ์ ๋ชป์ฐพ์๋ค... ์๊ณ ๋ณด๋ ์น์ฆ๋ฅผ ํ์ํ๋ ๊ฒ ์๋ ๊ณต๊ธฐ๋ฅผ ํ์ํ๋ ๋ฐฉ๋ฒ์ผ๋ก ์ ๊ทผํ์ด์ผ ํ๋ค. (0,0)์ ๊ธฐ์ค์ผ๋ก ๋ชจ๋ ๊ณต๊ธฐ๋ฅผ ํ์ํด ๋๊ฐ๋ฉด์ ์ฃผ๋ณ์ ์น์ฆ๊ฐ ์์ผ๋ฉด ๋ น์ด๋ ๋ฐฉ์... ๊ทธ๋ฌ๋ฉด ์น์ฆ ๋ด๋ถ์ ๊ตฌ๋ฉ๋ ๋ฐ๋ก ์๊ฐ ์ ํด๋ ๋๊ณ ...!! ์ค๋ช ๋ฃ์๋ง์ ์ ๋ ์นด ๊ทธ ์์ฒด ๊ทธ๋ํ ํ์ ๊พธ์คํ ๊ณต๋ถํด์ผ์ง...ํํ ์ฝ๋๋ ๋ค์๊ณผ ๊ฐ๋ค. import java.io.BufferedReader; import java.io.IOException; import ja..


๋ถ๋ค๋ถ๋ค....์๊ฐ์ด๊ณผ๋ก 6๋ฒ ์คํจํ๊ณ ๊ฒจ์ฐ ๋ง์ถ ๋ฌธ์ ... ๋ฌธ์ ๋ง ์ฝ๊ณ ๋ ์ฌ์ด ํธ์ธ ์ค ์์๋๋ฐ... ์ฐ์ ํฌ๋ ์ธ์ ๋ฌด๊ฒ ์ ํ๊ณผ, ๋ฐ์ค๋ค์ ๋ฌด๊ฒ๋ฅผ ๋ฆฌ์คํธ์ ์ ์ฅ ํ ๋ด๋ฆผ์ฐจ์์ผ๋ก ์ ๋ ฌํ ๋ค์ ์ ์ผ ๋ฌด๊ฑฐ์ด ๋ฌด๊ฒ๋ฅผ ๋ค ์ ์๋ ํฌ๋ ์ธ์ด ๊ฐ์ฅ ๋ฌด๊ฑฐ์ด ๋ฐ์ค๋ฅผ ๋ชป ๋ค ๊ฒฝ์ฐ์๋ -1์ถ๋ ฅ ํ ํ๋ก๊ทธ๋จ ์ข ๋ฃ. ํฌ๋ ์ธ์ด j๋ฒ์งธ ๋ฐ์ค๋ฅผ ๋ค ์ ์์ผ๋ฉด ๋ฆฌ์คํธ์์ ์ญ์ ํฌ๋ ์ธ์ด j๋ฒ์งธ ๋ฐ์ค๋ฅผ ๋ค ์ ์์ผ๋ฉด j++ ์ฒ์์ ํฌ๋ ์ธ ๋ฆฌ์คํธ๋ ์กฐํ๋ง ์ด๋ฃจ์ด์ง๊ธฐ ๋๋ฌธ์ ๋ฐฐ์ด์ ์ ์ฅ์ ํ์๊ณ , ๋ฐ์ค ๋ฆฌ์คํธ๋ ์ญ์ ๊ฐ ๋น๋ฒํ๊ฒ ์งํ๋๋ค๊ณ ์๊ฐํ์ฌ LinkedList๋ก ์ ์ฅํ์๋ค. → BufferedReader + LinkedList ์กฐํฉ → ์คํจ!!! (์๋ฌด๋๋ while - for - for ๋ก ์๊ฐ์ด๊ณผ๊ฐ ๋น์ฐํ...) ๊ณ์ ํ๋ฆฌ๋ค๊ฐ ..