๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

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