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

๋ฐ˜์‘ํ˜•

Algorithm

[Algorithm/Java][๋ฐฑ์ค€] 2775๋ฒˆ ๋ถ€๋…€ํšŒ์žฅ์ด ๋ ํ…Œ์•ผ [BOJ] 2775๋ฒˆ ๋ถ€๋…€ํšŒ์žฅ์ด ๋ ํ…Œ์•ผ https://www.acmicpc.net/problem/2775 ๋ฌธ์ œ ์ ‘๊ทผ ๋ฐฑ์ค€์—์„œ ์—์ œ๋กœ ์ค€ ์ž…๋ ฅ๊ณผ ์ถœ๋ ฅ์„ ํ•˜๋‚˜์”ฉ ์“ฐ๋‹ค๋ณด๋ฉด ๊ทœ์น™์ด ๋ณด์ด๊ฒŒ ๋œ๋‹ค. 000 -> 0 001 -> 1 002 -> 2 003 -> 3 100 -> 0 101 -> 1 102 -> 3 103 -> 6 200 -> 0 201 -> 1 202 -> 4 203 -> 10 ์ด๋•Œ 103ํ˜ธ์—๋Š” 003ํ˜ธ์™€ 102ํ˜ธ๋ฅผ ํ•ฉ์นœ ๊ฐ’์ด ์žˆ๊ณ , 203ํ˜ธ์—๋Š” 103ํ˜ธ์™€ 202ํ˜ธ๋ฅผ ํ•ฉ์นœ ๊ฐ’์ด ์žˆ๋‹ค. ์ด๋ฅผ ์ ํ™”์‹์œผ๋กœ ๋ฐ”๊ฟ”๋ณด๋ฉด (k0n)ํ˜ธ = k-10nํ˜ธ + k0n-1ํ˜ธ ์ฝ”๋“œ๋กœ ๋ฐ”๊ฟ”๋ณด๋ฉด dp[floor][room] = dp[foor-1][n] + dp[floor][n-1]์ด ๋œ๋‹ค. ์ด๋ฅผ ์ฝ”๋“œ๋กœ ๋ฐ”๊พธ๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. Co.. ๋”๋ณด๊ธฐ
[Algorithm/Java][๋ฐฑ์ค€] 14226๋ฒˆ ์ด๋ชจํ‹ฐ์ฝ˜ [BOJ] 14226๋ฒˆ ์ด๋ชจํ‹ฐ์ฝ˜ https://www.acmicpc.net/problem/14226 ๋ฌธ์ œ ์ ‘๊ทผ ํ™”๋ฉด์— ์žˆ๋Š” ์ด๋ชจํ‹ฐ์ฝ˜์„ S๊ฐœ ๋งŒ๋“œ๋Š” ์ตœ์†Œ ์‹œ๊ฐ„์„ ๊ตฌํ•˜๋Š” ๋ฌธ์ œ์ด๋‹ค. ํ™”๋ฉด์— ์žˆ๋Š” ์ด๋ชจํ‹ฐ์ฝ˜ ๊ฐœ์ˆ˜์™€ ํด๋ฆฝ๋ณด๋“œ์— ์žˆ๋Š” ์ด๋ชจํ‹ฐ์ฝ˜ ๊ฐœ์ˆ˜ ๊ทธ๋ฆฌ๊ณ  ์‹œ๊ฐ„ ์ •๋ณด๋ฅผ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋Š” Emoticon ํด๋ž˜์Šค๋ฅผ ๋งŒ๋“ค๊ณ  isVisited ๋ฐฐ์—ด์„ ํ™”๋ฉด์— ์žˆ๋Š” ์ด๋ชจํ‹ฐ์ฝ˜ ์ˆ˜์™€ ํด๋ฆฝ๋ณด๋“œ์— ์žˆ๋Š” ์ด๋ชจํ‹ฐ์ฝ˜ ์ˆ˜๋ฅผ ๊ณ ๋ คํ•  ์ˆ˜ ์žˆ๋„๋ก 2์ฐจ์› ๋ฐฐ์—ด๋กœ ๋งŒ๋“ค์—ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  BFS๋ฅผ ์ด์šฉํ•ด์„œ ํ™”๋ฉด์— ์žˆ๋Š” ์ด๋ชจํ‹ฐ์ฝ˜์„ ํด๋ฆฝ๋ณด๋“œ์— ์ €์žฅํ•˜๋Š” ๊ฒฝ์šฐ, ํ™”๋ฉด์— ์žˆ๋Š” ์ด๋ชจํ‹ฐ์ฝ˜ ํ•œ๊ฐœ๋ฅผ ์ œ๊ฑฐํ•˜๋Š” ๊ฒฝ์šฐ, ํด๋ฆฝ๋ณด๋“œ์— ์žˆ๋Š” ์ด๋ชจํ‹ฐ์ฝ˜์„ ๋ถ™์—ฌ๋„ฃ๋Š” ๊ฒฝ์šฐ ์„ธ๊ฐ€์ง€๋ฅผ ๊ณ ๋ คํ•ด์„œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ๋‹ค. ๋ฌธ์ œ๋ฅผ ๋ณด๊ณ  ์ด์ฐจ์› ๋ฐฐ์—ด๋กœ ํ•ด๊ฒฐํ•  ์ƒ๊ฐ์„ ํ•˜์ง€ ๋ชปํ•ด์„œ ํ‘ธ๋Š”๋ฐ ๊ฝค๋‚˜ ์˜ค๋ž˜๊ฑธ๋ ธ๋‹ค...๊ทผ๋ฐ .. ๋”๋ณด๊ธฐ
[Algorithm/Java][๋ฐฑ์ค€] 2252๋ฒˆ ์ค„ ์„ธ์šฐ๊ธฐ [BOJ] 2252๋ฒˆ ์ค„ ์„ธ์šฐ๊ธฐ https://www.acmicpc.net/problem/2252 ๋ฌธ์ œ ์ ‘๊ทผ ์œ„์ƒ ์ •๋ ฌ์„ ํ†ตํ•ด์„œ ์‰ฝ๊ฒŒ ํ‘ผ ๋ฌธ์ œ์ด๋‹ค. ์œ„์ƒ ์ •๋ ฌ์ด๋ž€ ์ˆœํ™˜์ด ์—†๋Š” ๊ทธ๋ž˜ํ”„์—์„œ ์ •์ ๊ฐ„์˜ ์ˆœ์„œ๋ฅผ ๊ตฌํ•  ์ˆ˜ ์žˆ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‹ค. ๊ฐ๊ฐ์˜ ํ•™์ƒ๋“ค์„ ์ •์ ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๊ณ , ์ž…๋ ฅ์œผ๋กœ ๋“ค์–ด์˜ค๋Š” ์ˆœ์„œ๋“ค์„ ๊ทธ๋ž˜ํ”„๋“ค์˜ ๊ฐ„์„ ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ์‰ฝ๊ฒŒ ๋ฌธ์ œ๊ฐ€ ํ’€๋ฆฐ๋‹ค. ์œ„์ƒ ์ •๋ ฌ์ด๋ž€ ์šฐ์„  ๋“ค์–ด์˜ค๋Š” ๊ฐ„์„ ์˜ ๊ฐœ์ˆ˜๋ฅผ ์„ธ๋Š” linkCnt์˜ ๊ฐ’์ด 0์ธ ์ •์ ๋“ค์„ ํ์— ๋„ฃ๊ณ , ํ•˜๋‚˜์”ฉ ํ์—์„œ ๋นผ๋ฉด์„œ ํ•ด๋‹น ์ •์ ๊ณผ ์—ฐ๊ฒฐ๋œ ์ •์ ๋“ค์— ๋Œ€ํ•ด์„œ linkCnt๋ฅผ -1 ํ•ด์ฃผ๊ณ  ๋‹ค์‹œ linkCnt์˜ ๊ฐ’์ด 0์ธ ์ •์ ๋“ค์„ ํ์— ๋„ฃ๋Š” ๋ฐฉ์‹์œผ๋กœ ์ง„ํ–‰๋œ๋‹ค. Code import java.util.ArrayList; import java.util.LinkedList; .. ๋”๋ณด๊ธฐ
[์•Œ๊ณ ๋ฆฌ์ฆ˜] ์ตœ์†Œ ์ŠคํŒจ๋‹ ํŠธ๋ฆฌ_ Kruskal & Prim ์ตœ์†Œ ์ŠคํŒจ๋‹ ํŠธ๋ฆฌ (MST, Minimum Spanning Tree) ์ŠคํŒจ๋‹ ํŠธ๋ฆฌ๋ž€, ๊ทธ๋ž˜ํ”„์—์„œ ์ˆœํ™˜ ์—†์ด ๋ชจ๋“  ์ •์ ์„ ์ž‡๋Š” ๋ถ€๋ถ„ ๊ทธ๋ž˜ํ”„๋ฅผ ์˜๋ฏธํ•œ๋‹ค. ์ตœ์†Œ ์ŠคํŒจ๋‹ ํŠธ๋ฆฌ๋ž€, ์ด๋Ÿฌํ•œ ์ŠคํŒจ๋‹ ํŠธ๋ฆฌ ์ค‘์—์„œ ๊ฐ„์„ ์˜ ๊ฐ€์ค‘์น˜์˜ ํ•ฉ์ด ๊ฐ€์žฅ ์ž‘์€ ์ŠคํŒจ๋‹ ํŠธ๋ฆฌ๋ฅผ ์˜๋ฏธํ•œ๋‹ค. ์ด๋Ÿฌํ•œ ์ตœ์†Œ ์ŠคํŒจ๋‹ ํŠธ๋ฆฌ๋ฅผ ๊ตฌํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ ํฌ๋ฃจ์Šค์นผ(Kruskal)๊ณผ ํ”„๋ฆผ(Prim) ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ์žˆ๋‹ค. ํฌ๋ฃจ์Šค์นผ (Kruskal) ์•Œ๊ณ ๋ฆฌ์ฆ˜ ํฌ๋ฃจ์Šค์นผ ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ๋ชจ๋“  ๊ฐ„์„  ์ค‘์—์„œ ๊ฐ€์žฅ ๊ฐ€์ค‘์น˜๊ฐ€ ์ž‘์€ ๊ฐ„์„ ๋ถ€ํ„ฐ ์—ฐ๊ฒฐํ•ด ์ฃผ๋ฉด์„œ ์ตœ์†Œ ์ŠคํŒจ๋‹ ํŠธ๋ฆฌ๋ฅผ ๋งŒ๋“œ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‹ค. ๊ฐ„์„ ๋“ค์„ ์—ฐ๊ฒฐํ•˜๋ฉด์„œ ์ˆœํ™˜์ด ๋ฐœ์ƒํ•œ๋‹ค๋ฉด ํ•ด๋‹น ๊ฐ„์„ ์„ ๋ฒ„๋ฆฌ๊ณ  ๋‹ค์Œ ๊ฐ„์„ ์„ ์„ ํƒํ•˜๊ฒŒ ๋˜๋Š”๋ฐ ์ด ๋•Œ, Union-Find ์—ฐ์‚ฐ์„ ์‚ฌ์šฉํ•œ๋‹ค. ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ฐ„์„ ๋“ค์„ ๊ฐ€์ค‘์น˜๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•œ๋‹ค. .. ๋”๋ณด๊ธฐ
[Algorithm/Java][๋ฐฑ์ค€] 1197๋ฒˆ ์ตœ์†Œ ์ŠคํŒจ๋‹ ํŠธ๋ฆฌ [BOJ] 1197๋ฒˆ ์ตœ์†Œ ์ŠคํŒจ๋‹ ํŠธ๋ฆฌ https://www.acmicpc.net/problem/1197 ๋ฌธ์ œ ์ ‘๊ทผ ๋ชจ๋“  ์ •์ ์„ ์ตœ์†Œ ๊ฐ’์œผ๋กœ ์ˆœํšŒํ•  ์ˆ˜ ์žˆ๋Š” ํŠธ๋ฆฌ๋ฅผ ๊ตฌํ•˜๋Š” ๋ฌธ์ œ์ด๋‹ค. ๋Œ€ํ‘œ์ ์œผ๋กœ Kruskal๊ณผ Prim ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋‘ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ด์šฉํ•ด์„œ ๊ตฌํ˜„ํ•˜์˜€๋‹ค. Code Kruskal ์•Œ๊ณ ๋ฆฌ์ฆ˜ import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Arrays; import java.util.StringTokenizer; class Edge implements Comparable { int from; int to; int cost; public Edg.. ๋”๋ณด๊ธฐ
[์•Œ๊ณ ๋ฆฌ์ฆ˜] ์ตœ๋‹จ ๊ฒฝ๋กœ ๋ฌธ์ œ_๋‹ค์ต์ŠคํŠธ๋ผ & ๋ฒจ๋งŒํฌ๋“œ ๋‹ค์ต์ŠคํŠธ๋ผ & ๋ฒจ๋งŒํฌ๋“œ ์ด ๋‘ ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ๊ทธ๋ž˜ํ”„์—์„œ ์ตœ๋‹จ ๊ฒฝ๋กœ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ๋•Œ ์‚ฌ์šฉ๋˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‹ค. ์ตœ๋‹จ ๊ฒฝ๋กœ ๋ฌธ์ œ? ์ตœ๋‹จ ๊ฒฝ๋กœ๋ž€ ๊ทธ๋ž˜ํ”„์—์„œ ๊ฐ„์„ ์˜ ๊ฐ€์ค‘์น˜์˜ ํ•ฉ์ด ์ตœ์†Œ๊ฐ€ ๋˜๋Š” ๊ฒฝ๋กœ๋ฅผ ์ฐพ๋Š” ๋ฌธ์ œ์ด๋‹ค. ์ตœ๋‹จ ๊ฒฝ๋กœ ๋ฌธ์ œ๋ฅผ ํ‘ธ๋Š”๋ฐ ๋‹ค์–‘ํ•œ ๋ฐฉ๋ฒ•์ด ์žˆ์ง€๋งŒ, ๋‹ค์ต์ŠคํŠธ๋ผ์™€ ๋ฒจ๋งŒํฌ๋“œ๋ฅผ ์ •๋ฆฌํ•ด๋ณด๋ ค๊ณ  ํ•œ๋‹ค. ๋‹ค์ต์ŠคํŠธ๋ผ ์•Œ๊ณ ๋ฆฌ์ฆ˜(Dijkstra Algorithm) ๋‹ค์ต์ŠคํŠธ๋ผ ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ๊ทธ๋ž˜ํ”„์—์„œ ์Œ์˜ ๊ฐ€์ค‘์น˜๊ฐ€ ์—†์„ ๋•Œ ์ตœ๋‹จ ๊ฒฝ๋กœ๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ๋‹ค. V๊ฐœ์˜ ์ •์ ๊ณผ ์–‘์˜ ๊ฐ€์ค‘์น˜๋ฅผ ๊ฐ€์ง„ E๊ฐœ์˜ ๊ฐ„์„ ์„ ๊ฐ€์ง„ ๊ทธ๋ž˜ํ”„์—์„œ ์ถœ๋ฐœ ์ •์ ์œผ๋กœ๋ถ€ํ„ฐ ๋ชจ๋“  ์ตœ๋‹จ ๊ฒฝ๋กœ๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ๋‹ค. ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ง„ํ–‰๋œ๋‹ค. ํ˜„์žฌ ์ •์ ์— ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๋Š” ์ •์ ๋“ค์„ ๋ชจ๋‘ ๋ณธ๋‹ค. ํ˜„์žฌ ์ •์ ๊ณผ ์—ฐ๊ฒฐ๋˜๋Š” ๋‹ค์Œ ์ •์ ์œผ๋กœ์˜ ๊ฑฐ๋ฆฌ์™€ ์‹œ์ž‘ ์ •์ ๊ณผ ํ˜„์žฌ ์ •์ ๊นŒ์ง€์˜ ์ตœ๋‹จ ๊ฑฐ.. ๋”๋ณด๊ธฐ
[Algorithm/Java][๋ฐฑ์ค€] 1916๋ฒˆ ์ตœ์†Œ๋น„์šฉ ๊ตฌํ•˜๊ธฐ [BOJ] 1916๋ฒˆ ์ตœ์†Œ๋น„์šฉ ๊ตฌํ•˜๊ธฐ https://www.acmicpc.net/problem/1916 ๋ฌธ์ œ ์ ‘๊ทผ ์–‘์˜ ๊ฐ€์ค‘์น˜๋ฅผ ๊ฐ€์ง„ ๊ฐ„์„ ์œผ๋กœ ์ด๋ฃจ์–ด์ง„ ๊ทธ๋ž˜ํ”„์—์„œ ์ตœ๋‹จ ๊ฒฝ๋กœ๋ฅผ ์ฐพ๋Š” ๋ฌธ์ œ์—ฌ์„œ ๋‹ค์ต์ŠคํŠธ๋ผ์™€ ๋ฒจ๋งŒํฌ๋“œ ์•Œ๊ณ ๋ฆฌ์ฆ˜ 2๊ฐœ๋ฅผ ๋ชจ๋‘ ์ ์šฉํ•ด์„œ ๊ตฌํ˜„ํ–ˆ๋‹ค. ๋‹ค์ต์ŠคํŠธ๋ผ ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ์šฐ์„ ์ˆœ์œ„ ํ๋ฅผ ์ด์šฉํ•ด์„œ ์‹œ๊ฐ„๋ณต์žก๋„๋ฅผ ์ค„์˜€๊ณ , ๋‹ค์ต์ŠคํŠธ๋ผ์™€ ๋ฒจ๋งŒํฌ๋“œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ํฌ์ŠคํŠธ์— ์ •๋ฆฌํ–ˆ๋‹ค. [์•Œ๊ณ ๋ฆฌ์ฆ˜] ๋‹ค์ต์ŠคํŠธ๋ผ & ๋ฒจ๋งŒํฌ๋“œ Code ๋‹ค์ต์ŠคํŠธ๋ผ import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.*; class Node implements Comparable { int to; int .. ๋”๋ณด๊ธฐ
[์•Œ๊ณ ๋ฆฌ์ฆ˜] ํˆฌ ํฌ์ธํ„ฐ & ์Šฌ๋ผ์ด๋”ฉ ์œˆ๋„์šฐ ํˆฌ ํฌ์ธํ„ฐ & ์Šฌ๋ผ์ด๋”ฉ ์œˆ๋„์šฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜ 1์ฐจ์› ๋ฐฐ์—ด์„ 2ํšŒ ์ด์ƒ ๋ฐ˜๋ณต์ ์œผ๋กœ ํƒ์ƒ‰์„ ํ•ด์•ผํ•  ๊ฒฝ์šฐ ๋‹จ์ˆœํ•˜๊ฒŒ ํ•œ๋‹ค๋ฉด O(N^2) ์ด์ƒ ์‹œ๊ฐ„ ๋ณต์žก๋„๊ฐ€ ๊ฑธ๋ฆฌ์ง€๋งŒ ํˆฌ ํฌ์ธํ„ฐ์™€ ์Šฌ๋ผ์ด๋”ฉ ์œˆ๋„์šฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•˜๊ฒŒ ๋œ๋‹ค๋ฉด ๋ถ€๋ถ„ ๋ฐฐ์—ด์„ ์ด์šฉํ•˜์—ฌ ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ O(N)์œผ๋กœ ์ค„์ผ ์ˆ˜ ์žˆ๋Š” ๊ณตํ†ต์ ์ด ์žˆ๋‹ค. ํˆฌ ํฌ์ธํ„ฐ๋Š” ๋ถ€๋ถ„ ๋ฐฐ์—ด์˜ ๊ธธ์ด๊ฐ€ ๋ณ€ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ์Šฌ๋ผ์ด๋”ฉ ์œˆ๋„์šฐ๋Š” ๋ถ€๋ถ„ ๋ฐฐ์—ด์˜ ๊ธธ์ด๊ฐ€ ๊ณ ์ •์ ์ด๋ผ๋Š” ์ฐจ์ด์ ์ด ์žˆ๋‹ค. ํˆฌ ํฌ์ธํ„ฐ(Two Pointer) ํˆฌ ํฌ์ธํ„ฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ 1์ฐจ์› ๋ฐฐ์—ด์—์„œ ๊ฐ๊ฐ ๋‹ค๋ฅธ ์›์†Œ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” 2๊ฐœ์˜ ํฌ์ธํ„ฐ๋ฅผ ์กฐ์ž‘ํ•ด๊ฐ€๋ฉด์„œ ์›ํ•˜๋Š” ๊ฒƒ์„ ์–ป๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‹ค. ์ด๋Ÿฌํ•œ ํŠน์„ฑ ๋•Œ๋ฌธ์— ํˆฌ ํฌ์ธํ„ฐ๋Š” ์—ฐ์†๋˜๊ณ  ๊ธธ์ด๊ฐ€ ๊ฐ€๋ณ€์ ์ธ ๋ถ€๋ถ„ ๋ฐฐ์—ด๋“ค์„ ํ™œ์šฉํ•˜์—ฌ ํŠน์ • ์กฐ๊ฑด์„ ์ผ์น˜์‹œํ‚ค๋Š” ๋ฌธ์ œ์— ์ ์šฉ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค. ํˆฌ ํฌ์ธํ„ฐ๋กœ ํ•ด๊ฒฐํ•ด์•ผ.. ๋”๋ณด๊ธฐ