Algorithm


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..

Map์ด๋? Key์ Value๊ฐ ์์ผ๋ก ์ด๋ฃจ์ด์ง ์๋ฃ๊ตฌ์กฐ Key์ Value๊ฐ 1:1 ๋งคํ๋๊ธฐ ๋๋ฌธ์ Key์ ์ค๋ณต์ ํ์ฉํ์ง ์์ง๋ง Value์ ์ค๋ณต์ ํ์ฉํ๋ค. Map์ ์ข ๋ฅ 1. HashMap ์์๋ฅผ ๋ณด์ฅํ์ง ์๊ณ , Key์ Value๊ฐ null์ด ํ์ฉ๋๋ค. HashTable ๊ตฌ์กฐ 2. HashTable HashMap๊ณผ ๋์ผํ ๋ด๋ถ ๊ตฌ์กฐ, Key์ Value๊ฐ null์ด ๋ ์ ์๋ค. ๋๊ธฐํ๋ฅผ ์ง์ → ๋ฉํฐ์ค๋ ๋ ํ๊ฒฝ์์ Thread Safe ํ๋ค. 3. TreeMap ์ด์ง ๊ฒ์ ํธ๋ฆฌ ๊ตฌ์กฐ, Key๋ฅผ ๊ธฐ์ค์ผ๋ก ์ ๋ ฌํ์ฌ ์ ์ฅ๋๋ค. 4. LinkedHashMap HashMap ๊ตฌ์กฐ head, tail ๋ณ์๊ฐ ์ถ๊ฐ๋์ด Double-LinkedList๋ก ์์๋ฅผ ์ ์งํ๋ค.


Hash Function(ํด์ ํจ์) ํด์ํจ์ ๋๋ ํด์ ์๊ณ ๋ฆฌ์ฆ์ ์์์ ๊ธธ์ด์ ๋ฐ์ดํฐ๋ฅผ ๊ณ ์ ๋ ๊ธธ์ด์ ๋ฐ์ดํฐ๋ก ๋งคํํ๋ ํจ์๋ฅผ ๋งํ๋ค. ๊ณ ์ ๋ ๊ธธ์ด์ ๋ฐ์ดํฐ๋ก ๋งคํํ๋ ๊ณผ์ ์ ํด์ฑ(hashing)์ด๋ผ๊ณ ํ๊ณ ํด์ ํจ์์ ์ํด ์ป์ด์ง๋ ๊ฐ์ ํด์ ๊ฐ, ํด์์ฝ๋ ๋๋ ํด์(hash) ๋ผ๊ณ ํ๋ค. ํด์ํจ์์ ์กฐ๊ฑด 1. ํ๋์ ์ถ๋ ฅ์ ๋ํ์ฌ ์ด ์ถ๋ ฅ์ผ๋ก ๋งคํํ๋ ์ ๋ ฅ์ ์ฐพ๋ ๊ฒ์ด ๊ณ์ฐ์ ์ผ๋ก ๋ถ๊ฐ๋ฅํ๋ค. 2. ํ๋์ ์ ๋ ฅ์ ๋ํ์ฌ ๊ฐ์ ์ถ๋ ฅ์ผ๋ก ๋งคํ์ํค๋ ๋ค๋ฅธ ์ ๋ ฅ์ ์ฐพ๋ ๊ฒ์ด ๊ณ์ฐ์ ์ผ๋ก ๋ถ๊ฐ๋ฅํ๋ค. Hash Table(ํด์ ํ ์ด๋ธ) ์ ๋ ฅ ํค ๊ฐ์ ํด์ํจ์๋ฅผ ์ฌ์ฉํ์ฌ ํด์๋ฅผ ์ป๊ณ , ๊ทธ ํด์ ๊ฐ์ ์ธ๋ฑ์ค๋ก ์ฌ์ฉํ์ฌ value๋ฅผ ์ ์ฅํ๋ ์๋ฃ๊ตฌ์กฐ. ๊ณ ์ ํ ์ธ๋ฑ์ค์ ์ ์ฅ์ ํ๊ธฐ ๋๋ฌธ์ ์ถ๊ฐ/์ญ์ ์ ๋ฐ์ดํฐ๋ฅผ ์ด๋ํ ..


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 ๋ค์์ผ๋ก ๋์ด๊ฐ ๋ ์ ๋์ ์๋ ์ด๋ฐฅ๋ค๋ง..

์ต์ฅ ์ฆ๊ฐ ์์ด(LIS) ๋ฐฐ์ด ์์๋ฅผ ์ ์งํ๋ฉด์ ํฌ๊ธฐ๊ฐ ์ ์ง์ ์ผ๋ก ์ปค์ง๋ ๊ฐ์ฅ ๊ธด ๋ถ๋ถ์งํฉ์ ๊ธธ์ด ์๋ฅผ ๋ค์ด {4, 8, 1, 2, 5}๋ผ๋ ์์ด์ด ์๋ค๋ฉด {1, 2, 5}์ ๊ธธ์ด๊ฐ 3์ผ๋ก ์ ์ผ ๊ธธ๋ค. ์ ๊ทผ๋ฐฉ๋ฒ 1. Brute Force ๋ชจ๋ ๋ถ๋ถ์งํฉ์ ๊ตฌํ๊ณ , ๊ฐ๊ฐ์ ๋ถ๋ถ์งํฉ์ด ์ฆ๊ฐ์์ด์ธ์ง ํ๋ณ ๋ชจ๋ ๋ถ๋ถ์งํฉ์ ๊ฐ์๋ 2^n์ด๋ฏ๋ก ์๊ฐ๋ณต์ก๋๊ฐ O(2^n)์ด ๋๋ค. 2. DP int[] DP = new int[N+1] ์์ฑ DP[i]๋ A[i]๊ฐ ๋ถ๋ถ์งํฉ ์์ด์ ๋ง์ง๋ง ์์์ผ ๋ ์ต์ฅ๊ธธ์ด(์ต์ ํด)๋ฅผ ์ ์ฅํ๋ค. ๋ฐ์ for๋ฌธ์ N๋ฒ, ์์ for๋ฌธ์ i-1๋ฒ ๋๊ธฐ๋๋ฌธ์ ์๊ฐ๋ณต์ก๋๋ O(2^n)์ด ๋๋ค. int N = 5;// A์ ๊ธธ์ด int[] A = {4, 8, 1, 2, 5}; int[] DP = ..


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..