Problem Solving (20) ์ธ๋ค์ผํ ๋ฆฌ์คํธํ [Java] ๋ฐฑ์ค 31804 - Chance! https://www.acmicpc.net/problem/31804ํ์ด์ฒ์์๋ ๊ทธ๋ฆฌ๋ ๋ฌธ์ ๊ฐ? ํ๋๋ฐ ๊ทธ๊ฑด ์๋์๊ณ dp ๋ฌธ์ ์๋ค.์ฐฌ์ค๋ฅผ ์ฌ์ฉํ ๊ฒฝ์ฐ์ ์ฌ์ฉํ์ง ์์ ๊ฒฝ์ฐ ๋๋ก ๋๋ ์ dp ๋ฐฐ์ด์ ์ฑ์์ฃผ๋ฉด ๋๋ค. i = ์ ์dp[i][0] = ์ฐฌ์ค๋ฅผ ์์ง ์ฌ์ฉํ์ง ์์์ ๋dp[i][1] = ์ฐฌ์ค๋ฅผ ์ด๋ฏธ ์ฌ์ฉํ์ ๋ dp[i][0]์ ์ฑ์ฐ๊ธฐ ์ํด์๋ dp[i - 1][0], dp[i / 2][0]์ ๊ฐ์ ์ดํด๋ณด๊ณ dp[i][1]์ ์ฑ์ฐ๊ธฐ ์ํด์๋ dp[i - 1][1], dp[i / 2][1], dp[i / 10][0]์ ๊ฐ์ ์ดํด๋ณธ๋ค. ์ฃผ์ํ ์ ์ i๊ฐ 2์ ๋ฐฐ์์ธ์ง๋ ํ์ธํด์ผ ํ๋ค.์ฝ๋๋๋ณด๊ธฐimport java.io.*;import java.util.*;public class Main { private.. [Java] ๋ฐฑ์ค 31792 - ํ๋น๋ฏธ๋์ด (Hard) https://www.acmicpc.net/problem/31792๋ฌธ์ ํ์ด์ฝ์ /์ญ์ /ํ์ ๋ชจ๋ ์๊ฐ ๋ณต์ก๋ O(logN)์ ๊ฐ๋ฅํ ์ด์ง ํ์ ํธ๋ฆฌ๋ฅผ ํ์ฉํ ์ ์๋ค.์ง์ 3 (ํ์) ๊ฐ์ ๊ฒฝ์ฐ ๊ทธ๋ฆฌ๋ํ๊ฒ ์ ๊ทผํ ์ ์๋๋ฐ, ๊ทธ๋ฅ ๊ฐ๊ฒฉ์ด ๋ฎ์ ์ฑ ๋ถํฐ ์ง์ดํ๋ค๊ฐ ์๋ก์ด ํ์ด์ง๊ฐ ํ์ํ๋ฉด ์ถ๊ฐํ๋ฉด ๋๋ค. ๋ฌผ๋ก ํ๋ํ๋์ฉ ํ์ํ๋ฉด O(N)์ด ๋๋ฏ๋ก S = S * 2 ๊ฐ์ ์์ผ๋ก ํ์ํ๊ธฐ. (TreeMap.higerKey(Key k) ๋ฉ์๋๋ฅผ ํ์ฉํ๋ฉด ์ฌ์) ์ฝ๋๋๋ณด๊ธฐimport java.io.*;import java.util.*;public class Main { public static void main(String[] args) throws IOException { BufferedReader br = n.. [Java] ๋ฐฑ์ค 2411 - ์์ดํ ๋จน๊ธฐ https://www.acmicpc.net/problem/2411 ํ์ด ์์ดํ ์ ์ฒดํฌํฌ์ธํธ ์ผ์ ๋ฌธ์ ๋ฅผ ์ฌ๋ฌ ์์ ํ๋ ฌ ๊ฒฝ๋ก ๋ฌธ์ ๋ก ๋๋๊ธฐ! ์๋ฅผ ๋ค์ด, ์์ ์ ๋ ฅ 1์ ๊ฒฝ์ฐ์๋ ์๋์ ๊ฐ์ด ๊ตฌ์ญ์ ๋๋ ์ ๊ฐ ๊ตฌ์ญ๋ง๋ค ํ๋ ฌ ๊ฒฝ๋ก ๋ฌธ์ ์ ์ฉ ๊ตฌ์ญ์ ๋๋๋ค๊ณ ํํํ๋๋ฐ ์ฌ์ค ์์ดํ ์ ์ผ์ชฝ ์๋ (1, 1) ์ ๊ฐ๊น์ด ๊ธฐ์ค์ผ๋ก ์ ๋ ฌํ๊ณ ์ฐจ๋ก๋๋ก ๋จน์ผ๋ก ๊ฐ๋ฉด ๋จ ์ถ๊ฐ๋ก, ์์์ (1, 1)๊ณผ ๋์ฐฉ์ (N, M)์๋ ์์ดํ ์ด ์๋ค๊ณ ์๊ฐํ๋ฉด ๊ตฌํ ๋ ํธํจ ์ฝ๋ ๋๋ณด๊ธฐ import java.io.*; import java.util.*; public class Main { public static class Point { public int row, col; public Point(int r, int c) { row.. [Java] ๋ฐฑ์ค 31716 - ํ๋๋ชจ๋น์ค ์์จ ์ฃผํ ํ ์คํ 1 https://www.acmicpc.net/problem/31716 ํ์ด ํ ํธ๋์์ 1์ด → N์ด๋ก ์ด๋ํ๋ ์ต์๊ฑฐ๋ฆฌ๋ BFS ๋๋ฆฌ๋ฉด ๊ธ๋ฐฉ ๋์ค๋๋ฐ ํ ํธ๋์์ ๋ค์ ํธ๋์ผ๋ก ๋์ด๊ฐ๋ ์ด๋ ๊ฑฐ๋ฆฌ๋ฅผ ๊ผผ๊ผผํ๊ฒ ์ฒ๋ฆฌํด์ค์ผ ํ๋ค. ํนํ, ํด๋น ํธ๋ ๋์ฐฉ์ ์ ํ๊ณผ ๋ค์ ํธ๋ ์์์ ์ ํ์ ๋ง์ถฐ์ฃผ๋ ์์ ์ด ํ์ํ๋ค. ์ฝ๋ ๋๋ณด๊ธฐ import java.io.*; import java.util.*; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st = new S.. [Java] ๋ฐฑ์ค 1707 - ์ด๋ถ ๊ทธ๋ํ https://www.acmicpc.net/problem/1707 ํ์ด ๊ฐ ๋ ธ๋๋ง๋ค 1๊ณผ -1์ ๋ฒ๊ฐ์ ๋งค๊ธฐ๋ฉด์ ๊ทธ๋ํ ํ์ (BFS/DFS): 1์ด ๋ค์ด๊ฐ์ผํ ๋ ธ๋์ ์ด๋ฏธ -1์ด ๋ค์ด๊ฐ์์ผ๋ฉด NO -1์ด ๋ค์ด๊ฐ์ผํ ๋ ธ๋์ ์ด๋ฏธ 1์ด ๋ค์ด๊ฐ์์ผ๋ฉด NO ๋ณ ๋ฌธ์ ์์ด ๊ทธ๋ํ ํ์์ด ๋๋๋ฉด YES ์ฝ๋ ๋๋ณด๊ธฐ import java.io.*; import java.util.*; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int K = Integer.parseInt(br.readLin.. [Java] ๋ฐฑ์ค 16724 - ํผ๋ฆฌ ๋ถ๋ ์ฌ๋์ด https://www.acmicpc.net/problem/16724 ํ์ด ๋จ์ํ ๊ตฌ์ญ์ ๊ฐ์๋ง ์ถ๋ ฅํ๋ ๋ฌธ์ ๋ผ ์ ๋์จ ํ์ธ๋ ๊ฐ์ ์๊ณ ๋ฆฌ์ฆ ์์ด๋ ํ์ด๊ฐ ๊ฐ๋ฅํ ๊ฒ ๊ฐ๋ค. ํน์ ์นธ์์ ๋ฐฉํฅ ๋ฐ๋ผ ์ด๋ํ๋ฉด์ ๊ตฌ์ญ์ ๋ฒํธ๋ฅผ ๋งค๊ธฐ๋ฉด ๋๋๋ฐ ์ด๋ํ๋ค๊ฐ 1. ์์ง ํ์ธ๋์ง ์์ ์นธ์ ๋์ฐฉ ⇒ ํ์ฌ ๋ฒํธ๋ฅผ ๋งค๊น 2. ํ์ฌ ๋ฒํธ๊ฐ ์ ํ ์นธ์ ๋์ฐฉ ⇒ ์ฌ์ดํด์ด๋๊น ์ด๋ ๊ธ์งํ๊ณ ๋น์ด์๋ ์นธ์์ ์๋ก์ด ๊ตฌ์ญ ๋ฒํธ๋ฅผ ๋งค๊ธฐ๋ฉด์ ์ด๋ ์์ 3. ์ด์ ๋ฒํธ๊ฐ ์ ํ ์นธ์ ๋์ฐฉ ⇒ ๋ ๊ตฌ์ญ์ด ์ฐ๊ฒฐ๋์ผ๋๊น ๊ตฌ์ญ ์นด์ดํธ ํ๋ ์ค์ด๊ณ ๋น์ด์๋ ์นธ์์ ์๋ก์ด ๋ฒํธ๋ฅผ ๋งค๊ธฐ๋ฉด์ ์ด๋ ์์ ์ฝ๋ ๋๋ณด๊ธฐ import java.io.*; import java.util.*; public class Main { public static void ma.. [Java] ๋ฐฑ์ค 7579 - ์ฑ https://www.acmicpc.net/problem/7579 ํ์ด ์ผํ ๋ด๋ ๋ฐฐ๋ญ ๋ฌธ์ ๋ฅผ ๋ง์ด ๋ฎ์ ์๋ค dp[i][w] = ์ต๋ ๋ฌด๊ฒ๊ฐ w์ธ ๋ฐฐ๋ญ์์ i๋ฒ์งธ ๋ฌผ๊ฑด๊น์ง ํ๋จํ์ ๋์ ์ต๋ ๊ฐ์น dp[i][m] = ์ต๋ ๋ฉ๋ชจ๋ฆฌ๊ฐ m์ธ ์ํ์์ i๋ฒ์งธ ์ฑ๊น์ง ํ๋จํ์ ๋์ ์ต๋ ๋น์ฉ ํ์ง๋ง ์ด๋ ๊ฒ ํ๊ธฐ์๋ m์ด ์ต๋ 10,000,000๊น์ง ์ปค์ ธ์ ์๋จ ๋์ ๊ธฐ์ค์ ์ ๋ฉ๋ชจ๋ฆฌ๊ฐ ์๋ ๋น์ฉ์ผ๋ก ์ก์ผ๋ฉด dp[i][c] = ์ต๋ ๋น์ฉ์ด c์ธ ์ํ์์ i๋ฒ์งธ ์ฑ๊น์ง ํ๋จํ์ ๋์ ์ต๋ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋ ์ฌ๊ธฐ์ c๋ ์ต๋ 100×100 ์์ ์์ ์ด์ฉํด์ ์ฐ๋ฆฌ ์ํ๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ด๊ณผํ๋ ๋น์ฉ์ ์ต์๋ฅผ ๊ตฌํ๋ฉด ๋! ์ฝ๋ ๋๋ณด๊ธฐ import java.io.*; import java.util.*; public class Ma.. [Java] ๋ฐฑ์ค 21276 - ๊ณ๋ณด ๋ณต์๊ฐ ํธ์ https://www.acmicpc.net/problem/21276 ํ์ด ์กฐ์-์์ ๊ด๊ณ๋ฅผ ์ด์ฉํด์ ์์ ์ ๋ ฌ ๋ถ๋ชจ-์์ ๊ด๊ณ๋ฅผ ์ถ๋ ฅํ๋ ๊ฑด ์ ์ฒด ์ถ๋ ฅ์์ ์์์ ์ด๋ฆ์ด ํ ๋ฒ๋ง ๋ฑ์ฅํ๋ค๋ ์ ์ ์ด์ฉํ ์ ์์. ๊ฐ์ฅ ๋ฐ์์ ๋ถํฐ ์๋ก ์ฌ๋ผ๊ฐ๋ฉด์ ์์๋ค์ ์ถ๋ ฅํ๋๋ฐ ์ด๋ฏธ ๋์จ ์ด๋ฆ์ ์ถ๋ ฅํ์ง ์๋๋ก ํ๋ฉด ๋จ. ๋ฌธ์์ด ์ฒ๋ฆฌ๋ฅผ ์ํด HashMap ์ฌ์ฉ ์ฝ๋ ๋๋ณด๊ธฐ import java.io.*; import java.util.*; public class Main { public static class Person { public String name; public int indegree, outdegree; public ArrayList ancestors; public ArrayList descendants.. ์ด์ 1 2 3 ๋ค์