๊ด€๋ฆฌ ๋ฉ”๋‰ด

๋ชฉ๋กBFS (14)

JUINTINATION

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ๊ณ ๋“์  Kit - ๊นŠ์ด/๋„ˆ๋น„ ์šฐ์„  ํƒ์ƒ‰(ํƒ€๊ฒŸ ๋„˜๋ฒ„, ๋„คํŠธ์›Œํฌ, ๊ฒŒ์ž„ ๋งต ์ตœ๋‹จ๊ฑฐ๋ฆฌ, ๋‹จ์–ด ๋ณ€ํ™˜, ์•„์ดํ…œ ์ค๊ธฐ, ์—ฌํ–‰๊ฒฝ๋กœ, ํผ์ฆ ์กฐ๊ฐ ์ฑ„์šฐ๊ธฐ)

1๋ฒˆ ๋ฌธ์ œ: ํƒ€๊ฒŸ ๋„˜๋ฒ„https://school.programmers.co.kr/learn/courses/30/lessons/43165 ํ”„๋กœ๊ทธ๋ž˜๋จธ์ŠคSW๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ ํ‰๊ฐ€, ๊ต์œก, ์ฑ„์šฉ๊นŒ์ง€ Total Solution์„ ์ œ๊ณตํ•˜๋Š” ๊ฐœ๋ฐœ์ž ์„ฑ์žฅ์„ ์œ„ํ•œ ๋ฒ ์ด์Šค์บ ํ”„programmers.co.krํ’€์ดn๊ฐœ์˜ ์Œ์ด ์•„๋‹Œ ์ •์ˆ˜๋“ค์„ ์ˆœ์„œ๋ฅผ ๋ฐ”๊พธ์ง€ ์•Š๊ณ  ์ ์ ˆํžˆ ๋”ํ•˜๊ฑฐ๋‚˜ ๋นผ์„œ ํƒ€๊ฒŸ ๋„˜๋ฒ„๋ฅผ ๋งŒ๋“ค๋ ค๊ณ  ํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด [1, 1, 1, 1, 1]๋กœ ์ˆซ์ž 3์„ ๋งŒ๋“ค๋ ค๋ฉด ๋‹ค์Œ ๋‹ค์„ฏ ๋ฐฉ๋ฒ•์„ ์“ธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.-1+1+1+1+1 = 3+1-1+1+1+1 = 3+1+1-1+1+1 = 3+1+1+1-1+1 = 3+1+1+1+1-1 = 3์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ˆซ์ž๊ฐ€ ๋‹ด๊ธด ๋ฐฐ์—ด numbers, ํƒ€๊ฒŸ ๋„˜๋ฒ„ target์ด ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์งˆ ๋•Œ ์ˆซ์ž๋ฅผ ์ ์ ˆ..

๋ฐฑ์ค€ 11728๋ฒˆ: ํŠธ๋ฆฌ์˜ ๋ถ€๋ชจ ์ฐพ๊ธฐ

๋ฌธ์ œ https://www.acmicpc.net/problem/11728 11728๋ฒˆ: ๋ฐฐ์—ด ํ•ฉ์น˜๊ธฐ ์ฒซ์งธ ์ค„์— ๋ฐฐ์—ด A์˜ ํฌ๊ธฐ N, ๋ฐฐ์—ด B์˜ ํฌ๊ธฐ M์ด ์ฃผ์–ด์ง„๋‹ค. (1 ≤ N, M ≤ 1,000,000) ๋‘˜์งธ ์ค„์—๋Š” ๋ฐฐ์—ด A์˜ ๋‚ด์šฉ์ด, ์…‹์งธ ์ค„์—๋Š” ๋ฐฐ์—ด B์˜ ๋‚ด์šฉ์ด ์ฃผ์–ด์ง„๋‹ค. ๋ฐฐ์—ด์— ๋“ค์–ด์žˆ๋Š” ์ˆ˜๋Š” ์ ˆ๋Œ“๊ฐ’์ด 109๋ณด๋‹ค ์ž‘๊ฑฐ www.acmicpc.net ํ’€์ด ๋ฃจํŠธ ์—†๋Š” ํŠธ๋ฆฌ๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ํŠธ๋ฆฌ์˜ ๋ฃจํŠธ๋ฅผ 1์ด๋ผ๊ณ  ์ •ํ–ˆ์„ ๋•Œ ๊ฐ ๋…ธ๋“œ์˜ ๋ถ€๋ชจ ๋…ธ๋“œ ๋ฒˆํ˜ธ๋ฅผ 2๋ฒˆ ๋…ธ๋“œ๋ถ€ํ„ฐ ์ˆœ์„œ๋Œ€๋กœ ์ถœ๋ ฅํ•˜๋Š” ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. ์ ‘๊ทผ ์ด์ง„ํŠธ๋ฆฌ๋ผ๋Š” ์กฐ๊ฑด๋„ ์—†๊ณ  ์ž์‹๋…ธ๋“œ๊ฐ€ ๋ถ€๋ชจ๋…ธ๋“œ๋ณด๋‹ค ์ˆซ์ž๊ฐ€ ํฌ๊ฑฐ๋‚˜ ์ž‘๋‹ค๋Š” ์กฐ๊ฑด์ด ์—†๊ธฐ ๋•Œ๋ฌธ์— ์ผ๋ฐ˜์ ์ธ ์ด์ง„ํƒ์ƒ‰ํŠธ๋ฆฌ ๊ด€๋ จ ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ๋Š” ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์—†์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ DFS์™€ BFS๋ฅผ ์ด์šฉํ•˜์—ฌ ๊ทธ๋ž˜ํ”„๋ฅผ ์ˆœํšŒํ•˜๋ฉฐ..

๋ฐฑ์ค€ 14226๋ฒˆ: ์ด๋ชจํ‹ฐ์ฝ˜

๋ฌธ์ œ https://www.acmicpc.net/problem/14226 14226๋ฒˆ: ์ด๋ชจํ‹ฐ์ฝ˜ ์˜์„ ์ด๋Š” ๋งค์šฐ ๊ธฐ์˜๊ธฐ ๋•Œ๋ฌธ์—, ํšจ๋นˆ์ด์—๊ฒŒ ์Šค๋งˆ์ผ ์ด๋ชจํ‹ฐ์ฝ˜์„ S๊ฐœ ๋ณด๋‚ด๋ ค๊ณ  ํ•œ๋‹ค. ์˜์„ ์ด๋Š” ์ด๋ฏธ ํ™”๋ฉด์— ์ด๋ชจํ‹ฐ์ฝ˜ 1๊ฐœ๋ฅผ ์ž…๋ ฅํ–ˆ๋‹ค. ์ด์ œ, ๋‹ค์Œ๊ณผ ๊ฐ™์€ 3๊ฐ€์ง€ ์—ฐ์‚ฐ๋งŒ ์‚ฌ์šฉํ•ด์„œ ์ด๋ชจํ‹ฐ์ฝ˜์„ S๊ฐœ ๋งŒ www.acmicpc.net ํ’€์ด ํ™”๋ฉด์— ์ด๋ชจํ‹ฐ์ฝ˜ 1๊ฐœ๊ฐ€ ์ž…๋ ฅ๋˜์–ด ์žˆ๋Š” ์ƒํƒœ์ธ ์˜์„ ์ด๊ฐ€ ํšจ๋นˆ์ด์—๊ฒŒ ๋‹ค์Œ ๊ทœ์น™์— ๋งž์ถฐ ์ด๋ชจํ‹ฐ์ฝ˜์„ s๊ฐœ ๋ณด๋‚ด์•ผ ํ•˜๋Š” ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. ํ™”๋ฉด์— ์žˆ๋Š” ์ด๋ชจํ‹ฐ์ฝ˜์„ ๋ชจ๋‘ ๋ณต์‚ฌํ•ด์„œ ํด๋ฆฝ๋ณด๋“œ์— ์ €์žฅํ•œ๋‹ค. ํด๋ฆฝ๋ณด๋“œ์— ์žˆ๋Š” ๋ชจ๋“  ์ด๋ชจํ‹ฐ์ฝ˜์„ ํ™”๋ฉด์— ๋ถ™์—ฌ๋„ฃ๊ธฐ ํ•œ๋‹ค. ํ™”๋ฉด์— ์žˆ๋Š” ์ด๋ชจํ‹ฐ์ฝ˜ ์ค‘ ํ•˜๋‚˜๋ฅผ ์‚ญ์ œํ•œ๋‹ค. ๋ชจ๋“  ์—ฐ์‚ฐ์€ 1์ดˆ๊ฐ€ ๊ฑธ๋ฆฌ๊ณ  ํด๋ฆฝ๋ณด๋“œ์— ์ด๋ชจํ‹ฐ์ฝ˜์„ ๋ณต์‚ฌํ•˜๋ฉด ์ด์ „์— ํด๋ฆฝ๋ณด๋“œ์— ์žˆ๋˜ ๋‚ด์šฉ์€ ๋ฎ์–ด์“ฐ๊ธฐ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค. ํด..

๊นŠ์ด์šฐ์„ ํƒ์ƒ‰(DFS)๊ณผ ๋„ˆ๋น„์šฐ์„ ํƒ์ƒ‰(BFS)

๊ทธ๋ž˜ํ”„(Graph)๋ž€? ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๋Š” ๊ฐ์ฒด ๊ฐ„์˜ ๊ด€๊ณ„๋ฅผ ํ‘œํ˜„ํ•˜๋Š” ์ž๋ฃŒ๊ตฌ์กฐ ๊ทธ๋ž˜ํ”„ G๋Š” (V, E)๋กœ ํ‘œ์‹œ ์ •์ (vertices) ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ํŠน์„ฑ์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋Š” ๊ฐ์ฒด ๋…ธ๋“œ(node)๋ผ๊ณ ๋„ ๋ถˆ๋ฆผ ๊ฐ„์„ (edge) ์ •์ ๋“ค ๊ฐ„์˜ ๊ด€๊ณ„ ๋งํฌ(link)๋ผ๊ณ ๋„ ๋ถˆ๋ฆผ DFS๋ž€? ๊นŠ์ด ์šฐ์„  ํƒ์ƒ‰(depth-first search)ํ•œ ๋ฐฉํ–ฅ์œผ๋กœ ๊ฐˆ ์ˆ˜ ์žˆ์„ ๋•Œ๊นŒ์ง€ ๊ฐ€๋‹ค๊ฐ€ ๋” ์ด์ƒ ๊ฐˆ ์ˆ˜ ์—†๊ฒŒ ๋˜๋ฉด ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ๊ฐˆ๋ฆผ๊ธธ๋กœ ๋Œ์•„์™€์„œ ์ด ๊ณณ์œผ๋กœ๋ถ€ํ„ฐ ๋‹ค๋ฅธ ๋ฐฉํ–ฅ์œผ๋กœ ๋‹ค์‹œ ํƒ์ƒ‰ ์ง„ํ–‰ ์Šคํƒ(Stack)์„ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ ์žฌ๊ท€ํ•จ์ˆ˜ ์‚ฌ์šฉ # ์žฌ๊ท€ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•œ DFS depth_first_search(v): v๋ฅผ ๋ฐฉ๋ฌธ๋˜์—ˆ๋‹ค๊ณ  ํ‘œ์‹œ; for all u ∈ (v์— ์ธ์ ‘ํ•œ ์ •์ ) do if (u๊ฐ€ ์•„์ง ๋ฐฉ๋ฌธ๋˜์ง€ ์•Š์•˜์œผ๋ฉด) then depth_first_..

๋ฐฑ์ค€ 12851๋ฒˆ: ์ˆจ๋ฐ”๊ผญ์งˆ 2

๋ฌธ์ œ https://www.acmicpc.net/problem/12851 12851๋ฒˆ: ์ˆจ๋ฐ”๊ผญ์งˆ 2 ์ˆ˜๋นˆ์ด๋Š” ๋™์ƒ๊ณผ ์ˆจ๋ฐ”๊ผญ์งˆ์„ ํ•˜๊ณ  ์žˆ๋‹ค. ์ˆ˜๋นˆ์ด๋Š” ํ˜„์žฌ ์  N(0 ≤ N ≤ 100,000)์— ์žˆ๊ณ , ๋™์ƒ์€ ์  K(0 ≤ K ≤ 100,000)์— ์žˆ๋‹ค. ์ˆ˜๋นˆ์ด๋Š” ๊ฑท๊ฑฐ๋‚˜ ์ˆœ๊ฐ„์ด๋™์„ ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋งŒ์•ฝ, ์ˆ˜๋นˆ์ด์˜ ์œ„์น˜๊ฐ€ X์ผ ๋•Œ www.acmicpc.net ํ’€์ด ์ˆ˜๋นˆ์ด๋Š” ํ˜„์žฌ ์  n(0 ≤ N ≤ 100,000)์— ์žˆ๊ณ , ๋™์ƒ์€ ์  k(0 ≤ K ≤ 100,000)์— ์žˆ์„ ๋•Œ ์ˆ˜๋นˆ์ด๋Š” ๊ฑท๊ฑฐ๋‚˜ ์ˆœ๊ฐ„์ด๋™ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ˆ˜๋นˆ์ด์˜ ์œ„์น˜๊ฐ€ x์ผ ๋•Œ ๊ฑท๋Š”๋‹ค๋ฉด 1์ดˆ ํ›„์— x-1 ๋˜๋Š” x+1๋กœ ์ด๋™ํ•˜๊ฒŒ ๋˜๊ณ  ์ˆœ๊ฐ„์ด๋™์„ ํ•˜๋Š” ๊ฒฝ์šฐ์—๋Š” 1์ดˆ ํ›„์— 2x์˜ ์œ„์น˜๋กœ ์ด๋™ํ•˜๊ฒŒ ๋  ๋•Œ ๋™์ƒ์„ ์ฐพ์„ ์ˆ˜ ์žˆ๋Š” ๊ฐ€์žฅ ๋น ๋ฅธ ์‹œ๊ฐ„๊ณผ ๊ฐ€์žฅ ๋น ..

๋ฐฑ์ค€ 1697๋ฒˆ: ์ˆจ๋ฐ”๊ผญ์งˆ

๋ฌธ์ œ https://www.acmicpc.net/problem/1697 1697๋ฒˆ: ์ˆจ๋ฐ”๊ผญ์งˆ ์ˆ˜๋นˆ์ด๋Š” ๋™์ƒ๊ณผ ์ˆจ๋ฐ”๊ผญ์งˆ์„ ํ•˜๊ณ  ์žˆ๋‹ค. ์ˆ˜๋นˆ์ด๋Š” ํ˜„์žฌ ์  N(0 ≤ N ≤ 100,000)์— ์žˆ๊ณ , ๋™์ƒ์€ ์  K(0 ≤ K ≤ 100,000)์— ์žˆ๋‹ค. ์ˆ˜๋นˆ์ด๋Š” ๊ฑท๊ฑฐ๋‚˜ ์ˆœ๊ฐ„์ด๋™์„ ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋งŒ์•ฝ, ์ˆ˜๋นˆ์ด์˜ ์œ„์น˜๊ฐ€ X์ผ www.acmicpc.net ํ’€์ด ์ˆ˜๋นˆ์ด๋Š” ํ˜„์žฌ ์  n(0 ≤ N ≤ 100,000)์— ์žˆ๊ณ , ๋™์ƒ์€ ์  k(0 ≤ K ≤ 100,000)์— ์žˆ์„ ๋•Œ ์ˆ˜๋นˆ์ด๋Š” ๊ฑท๊ฑฐ๋‚˜ ์ˆœ๊ฐ„์ด๋™ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ˆ˜๋นˆ์ด์˜ ์œ„์น˜๊ฐ€ x์ผ ๋•Œ ๊ฑท๋Š”๋‹ค๋ฉด 1์ดˆ ํ›„์— x-1 ๋˜๋Š” x+1๋กœ ์ด๋™ํ•˜๊ฒŒ ๋˜๊ณ  ์ˆœ๊ฐ„์ด๋™์„ ํ•˜๋Š” ๊ฒฝ์šฐ์—๋Š” 1์ดˆ ํ›„์— 2x์˜ ์œ„์น˜๋กœ ์ด๋™ํ•˜๊ฒŒ ๋  ๋•Œ ๋™์ƒ์„ ์ฐพ์„ ์ˆ˜ ์žˆ๋Š” ๊ฐ€์žฅ ๋น ๋ฅธ ์‹œ๊ฐ„์„ ๊ตฌํ•˜๋Š” ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค...