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

๋ชฉ๋กBFS (6)

Hey Tech

[BFS] ๋ฐฑ์ค€#16234: ์ธ๊ตฌ ์ด๋™/Python

๐Ÿ“ ๋ฌธ์ œ https://www.acmicpc.net/problem/16234 16234๋ฒˆ: ์ธ๊ตฌ ์ด๋™ N×Nํฌ๊ธฐ์˜ ๋•…์ด ์žˆ๊ณ , ๋•…์€ 1×1๊ฐœ์˜ ์นธ์œผ๋กœ ๋‚˜๋ˆ„์–ด์ ธ ์žˆ๋‹ค. ๊ฐ๊ฐ์˜ ๋•…์—๋Š” ๋‚˜๋ผ๊ฐ€ ํ•˜๋‚˜์”ฉ ์กด์žฌํ•˜๋ฉฐ, rํ–‰ c์—ด์— ์žˆ๋Š” ๋‚˜๋ผ์—๋Š” A[r][c]๋ช…์ด ์‚ด๊ณ  ์žˆ๋‹ค. ์ธ์ ‘ํ•œ ๋‚˜๋ผ ์‚ฌ์ด์—๋Š” ๊ตญ๊ฒฝ์„ ์ด ์กด์žฌํ•œ๋‹ค. ๋ชจ www.acmicpc.net ๐Ÿ’ก ์ ‘๊ทผ๋ฒ• BFS ์•Œ๊ณ ๋ฆฌ์ฆ˜๊ณผ ํ(Queue) ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜์˜€์Šต๋‹ˆ๋‹ค. ๋ฌธ์ œํ•ด๊ฒฐ ์ ˆ์ฐจ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ๊ตญ๊ฐ€๋ฅผ ๋Œ€์ƒ์œผ๋กœ ๊ฐ๊ฐ ์ค‘์‹ฌ๊ตญ์œผ๋กœ ์„ ์ •ํ•˜๊ณ , ์ƒํ•˜์ขŒ์šฐ ๋ฐฉ๋ฉด์— ์—ฐํ•ฉ์ด ๊ฐ€๋Šฅํ•œ ์ธ์ ‘๊ตญ์ด ์žˆ๋Š”์ง€ ํƒ์ƒ‰ํ•˜๋‹ˆ๋‹ค. ๋งŒ์ผ ์—ฐํ•ฉ๊ตญ์ด ์„ฑ๋ฆฝ๋œ๋‹ค๋ฉด, ํ•ด๋‹น ์ธ์ ‘๊ตญ์„ ์ค‘์‹ฌ์œผ๋กœ ๋‹ค์‹œ ์ƒํ•˜์ขŒ์šฐ ๋ฐฉ๋ฉด์˜ ์ธ์ ‘๊ตญ๊ณผ ์—ฐํ•ฉ๊ตญ์ด ์„ฑ๋ฆฝ๋˜๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ณผ์ •์€ ์ƒํ•˜์ขŒ์šฐ ๋ฐฉ๋ฉด์œผ๋กœ..

[BFS] ๋ฐฑ์ค€#13460: ๊ตฌ์Šฌ ํƒˆ์ถœ2/Python

๐Ÿ“ ๋ฌธ์ œ https://www.acmicpc.net/problem/13460 13460๋ฒˆ: ๊ตฌ์Šฌ ํƒˆ์ถœ 2 ์ฒซ ๋ฒˆ์งธ ์ค„์—๋Š” ๋ณด๋“œ์˜ ์„ธ๋กœ, ๊ฐ€๋กœ ํฌ๊ธฐ๋ฅผ ์˜๋ฏธํ•˜๋Š” ๋‘ ์ •์ˆ˜ N, M (3 ≤ N, M ≤ 10)์ด ์ฃผ์–ด์ง„๋‹ค. ๋‹ค์Œ N๊ฐœ์˜ ์ค„์— ๋ณด๋“œ์˜ ๋ชจ์–‘์„ ๋‚˜ํƒ€๋‚ด๋Š” ๊ธธ์ด M์˜ ๋ฌธ์ž์—ด์ด ์ฃผ์–ด์ง„๋‹ค. ์ด ๋ฌธ์ž์—ด์€ '.', '#', 'O', 'R', 'B' www.acmicpc.net ๐Ÿ’ก ์ ‘๊ทผ๋ฒ• BFS ์•Œ๊ณ ๋ฆฌ์ฆ˜๊ณผ ํ(Queue) ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜์˜€์Šต๋‹ˆ๋‹ค. ๋นจ๊ฐ„ ๊ณต๊ณผ ํŒŒ๋ž€ ๊ณต์˜ ์ขŒํ‘œ ์ •๋ณด์™€ ๋ณด๋“œ๋ฅผ ๊ธฐ์šธ์ธ ํšŸ์ˆ˜๋ฅผ ์ €์žฅํ•˜๋Š” ํ๊ฐ€ ๋นŒ ๋•Œ๊นŒ์ง€ ๋‹ค์Œ ์ž‘์—…์„ ๋ฐ˜๋ณตํ•ฉ๋‹ˆ๋‹ค. ๊ณต์ด ์›€์ง์ผ ์ˆ˜ ์žˆ์„ ๋•Œ๊นŒ์ง€ ๋ฐ˜๋ณต๋ฌธ์„ ํ™œ์šฉํ•˜์—ฌ ์ƒํ•˜์ขŒ์šฐ ๋ฐฉํ–ฅ์œผ๋กœ ์›€์ง์ด๊ฒŒ ํ•˜๋ฉฐ, ๋ณด๋“œ๋ฅผ ๊ธฐ์šธ์ธ ๋ฐฉํ–ฅ์œผ๋กœ ๊ณต์ด ๋ชจ๋‘ ์›€์ง์˜€๋‹ค๋ฉด ํ์— ๊ณต๋“ค์˜ ์ขŒํ‘œ์™€ ๊ธฐ..

[BFS] ๋ฐฑ์ค€#16236: ์•„๊ธฐ ์ƒ์–ด/Python

๐Ÿ“ ๋ฌธ์ œ https://www.acmicpc.net/problem/16236 16236๋ฒˆ: ์•„๊ธฐ ์ƒ์–ด N×N ํฌ๊ธฐ์˜ ๊ณต๊ฐ„์— ๋ฌผ๊ณ ๊ธฐ M๋งˆ๋ฆฌ์™€ ์•„๊ธฐ ์ƒ์–ด 1๋งˆ๋ฆฌ๊ฐ€ ์žˆ๋‹ค. ๊ณต๊ฐ„์€ 1×1 ํฌ๊ธฐ์˜ ์ •์‚ฌ๊ฐํ˜• ์นธ์œผ๋กœ ๋‚˜๋ˆ„์–ด์ ธ ์žˆ๋‹ค. ํ•œ ์นธ์—๋Š” ๋ฌผ๊ณ ๊ธฐ๊ฐ€ ์ตœ๋Œ€ 1๋งˆ๋ฆฌ ์กด์žฌํ•œ๋‹ค. ์•„๊ธฐ ์ƒ์–ด์™€ ๋ฌผ๊ณ ๊ธฐ๋Š” ๋ชจ๋‘ ํฌ๊ธฐ๋ฅผ ๊ฐ€ www.acmicpc.net ๐Ÿ’ก ์ ‘๊ทผ๋ฒ• 1) ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฐ ์ž๋ฃŒ๊ตฌ์กฐ BFS ์•Œ๊ณ ๋ฆฌ์ฆ˜๊ณผ ํ(Queue) ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜์˜€์Šต๋‹ˆ๋‹ค. ์ƒ์–ด๊ฐ€ ์ƒˆ๋กœ์šด ์ขŒํ‘œ๋กœ ์ด๋™ํ•˜๋ฉด, ํƒ์ƒ‰ ์‹œ์ž‘์  ์—ญ์‹œ ํ•ด๋‹น ์ƒˆ๋กœ์šด ์ขŒํ‘œ๋กœ ์ด๋™ํ•œ ๊ฒƒ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ดˆ๊ธฐ ์ƒ์–ด์˜ ์œ„์น˜๋ฅผ ํ์— ๋„ฃ๊ณ  ํƒ์ƒ‰ํ•  ๋•Œ๋งˆ๋‹ค ๊บผ๋‚ด๋ฉฐ, ์ƒˆ๋กœ์šด ์ขŒํ‘œ๋กœ ์ด๋™ํ•  ๋•Œ๋งˆ๋‹ค ํ์— ๋„ฃ๋Š” ๊ณผ์ •์„ ๋ฐ˜๋ณตํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. 2) ๋ฌธ์ œํ’€์ด ์ „๋žต ์ƒ์–ด๋Š” ๊ฐ€๋Šฅํ•œ ์ตœ๋Œ€ํ•œ ๋งŽ์€ ๋ฌผ๊ณ ..

[BFS/Combination] ๋ฐฑ์ค€#14502: ์—ฐ๊ตฌ์†Œ/Python ํ’€์ด

๐Ÿ“ ๋ฌธ์ œ https://www.acmicpc.net/problem/14502 14502๋ฒˆ: ์—ฐ๊ตฌ์†Œ ์ธ์ฒด์— ์น˜๋ช…์ ์ธ ๋ฐ”์ด๋Ÿฌ์Šค๋ฅผ ์—ฐ๊ตฌํ•˜๋˜ ์—ฐ๊ตฌ์†Œ์—์„œ ๋ฐ”์ด๋Ÿฌ์Šค๊ฐ€ ์œ ์ถœ๋˜์—ˆ๋‹ค. ๋‹คํ–‰ํžˆ ๋ฐ”์ด๋Ÿฌ์Šค๋Š” ์•„์ง ํผ์ง€์ง€ ์•Š์•˜๊ณ , ๋ฐ”์ด๋Ÿฌ์Šค์˜ ํ™•์‚ฐ์„ ๋ง‰๊ธฐ ์œ„ํ•ด์„œ ์—ฐ๊ตฌ์†Œ์— ๋ฒฝ์„ ์„ธ์šฐ๋ ค๊ณ  ํ•œ๋‹ค. ์—ฐ๊ตฌ์†Œ๋Š” ํฌ www.acmicpc.net ๐Ÿ’ก ์ ‘๊ทผ๋ฒ• 1) ๋ฌธ์ œํ•ด๊ฒฐ ์ ˆ์ฐจ ๋ฌธ์ œํ•ด๊ฒฐ ์ ˆ์ฐจ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํฌ๊ฒŒ 3๋‹จ๊ณ„์ž…๋‹ˆ๋‹ค. 1๏ธโƒฃ ๋ฒฝ์„ ์„ธ์šธ ์ˆ˜ ์žˆ๋Š” 3๊ฐœ ์ง€์ ์˜ ๋ชจ๋“  ์กฐํ•ฉ ์ฐพ๊ธฐ 2๏ธโƒฃ ์•ž์„œ 1๏ธโƒฃ์—์„œ ์ •ํ•œ ์ง€์ ์— ๋ฒฝ์„ ์„ธ์šฐ๊ณ  ๋ฐ”์ด๋Ÿฌ์Šค ์ „ํŒŒ 3๏ธโƒฃ ๊ฐ€์žฅ ๋„“์€ ์•ˆ์ „์ง€๋Œ€์˜ ๋ฒ”์œ„ ์ถœ๋ ฅ 2) ๋ฌธ์ œํ•ด๊ฒฐ ๋ฐฉ๋ฒ• BFS ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ํ™œ์šฉํ•˜์—ฌ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜์˜€์Šต๋‹ˆ๋‹ค. ์กฐํ•ฉ(combination)์„ ์‚ฌ์šฉํ•œ ๊ฒฝ์šฐ์™€ ํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ๋ฅผ ๋‚˜๋ˆ„์–ด ํ’€์–ด๋ดค์Šต๋‹ˆ๋‹ค. ๊ฐ๊ฐ ๋‚˜๋ˆ„์–ด ..

[Python] BFS ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ฐœ๋… ๋ฐ ์‹ค์Šต

๋ณธ ํฌ์ŠคํŒ…์—์„œ๋Š” ๋„ˆ๋น„ ์šฐ์„  ํƒ์ƒ‰์ด๋ผ๊ณ  ๋ถˆ๋ฆฌ๋Š” BFS(Breadth-First Search)์— ๋Œ€ํ•ด ์•Œ์•„๋ด…๋‹ˆ๋‹ค. ๐Ÿ“š ๋ชฉ์ฐจ 1. BFS ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋ž€? 2. BFS ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋™์ž‘ ๊ณผ์ • 3. BFS ํŒŒ์ด์ฌ ๊ตฌํ˜„ 3.1. ์†Œ์Šค์ฝ”๋“œ ์„ค๋ช… 3.2. ์ „์ฒด ์†Œ์Šค์ฝ”๋“œ 1. BFS ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋ž€? BFS(Breadth-First Search)๋ž€ ๋„ˆ๋น„ ์šฐ์„  ํƒ์ƒ‰์ด๋ผ๊ณ ๋„ ๋ถˆ๋ฆฌ๋ฉฐ ๊ทธ๋ž˜ํ”„์—์„œ ์‹œ์ž‘ ๋…ธ๋“œ์— ์ธ์ ‘ํ•œ ๋…ธ๋“œ๋ถ€ํ„ฐ ํƒ์ƒ‰ํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ž…๋‹ˆ๋‹ค. BFS ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ์–ธ์ œ ์‚ฌ์šฉํ•˜๋ฉด ์ข‹์„๊นŒ์š”? BFS ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ์ฃผ๋กœ ๊ทธ๋ž˜ํ”„์—์„œ ๋ชจ๋“  ๊ฐ„์„ ์˜ ๋น„์šฉ์ด ๋™์ผํ•œ ์กฐ๊ฑด์—์„œ ์ตœ๋‹จ ๊ฑฐ๋ฆฌ๋ฅผ ๊ตฌํ•˜๋Š” ๋ฌธ์ œ๋ฅผ ํšจ๊ณผ์ ์œผ๋กœ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  "๋ฏธ๋กœ๋ฅผ ๋น ์ ธ๋‚˜๊ฐ€๋Š” ์ตœ๋‹จ ๊ฑฐ๋ฆฌ(๊ฒฝ๋กœ)"๋ฅผ ๊ตฌํ•˜๋Š” ๋ฌธ์ œ ๋“ฑ์—์„œ ํšจ๊ณผ์ ์œผ๋กœ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ž…๋‹ˆ๋‹ค...

ํ(Queue) ์ž๋ฃŒ๊ตฌ์กฐ ์ดํ•ด(+ Python)

๋ณธ ํฌ์ŠคํŒ…์—์„œ๋Š” ํ(Queue) ์ž๋ฃŒ๊ตฌ์กฐ์— ๋Œ€ํ•ด ์•Œ์•„๋ด…๋‹ˆ๋‹ค. ๐Ÿ“š ๋ชฉ์ฐจ 1. ํ(Queue) ์ž๋ฃŒ๊ตฌ์กฐ๋ž€? 2. ํ ๋™์ž‘ ์˜ˆ์‹œ 3. ํ ๊ตฌํ˜„(Python) 1. ํ(Queue) ์ž๋ฃŒ๊ตฌ์กฐ๋ž€? ํ ์ž๋ฃŒ๊ตฌ์กฐ๋Š” ์„ ์ž…์„ ์ถœ(ๅ…ˆๅ…ฅๅ…ˆๅ‡บ, First In First Out, ์ค„์—ฌ์„œ FIFO) ๊ตฌ์กฐ๋กœ ํ”ํžˆ ๋†€์ด๊ณต์› ๋‚ด ๋†€์ด๊ธฐ๊ตฌ ๋Œ€๊ธฐ์ค„์— ๋น„์œ ํ•ฉ๋‹ˆ๋‹ค(๊ทธ๋ฆผ 1 ์ฐธ๊ณ ). ์ฆ‰, ๋†€์ด๊ธฐ๊ตฌ ๋Œ€๊ธฐ์ค„์— ๋จผ์ € ์„  ์‚ฌ๋žŒ(๋ฐ์ดํ„ฐ ์ž…๋ ฅ)์ด ๋จผ์ € ๋†€์ด๊ธฐ๊ตฌ๋ฅผ ํƒ€๋Š”(๋ฐ์ดํ„ฐ ์ถœ๋ ฅ/์ œ๊ฑฐ) ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค(๋‹จ, ์ƒˆ์น˜๊ธฐ๋Š” ์—†๋‹ค๊ณ  ๊ฐ€์ •). ํ ์ž๋ฃŒ๊ตฌ์กฐ๋Š” ์•„๋ž˜ 2๊ฐ€์ง€ ํ•ต์‹ฌ์ ์ธ ํ•จ์ˆ˜๋กœ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ ์‚ฝ์ž…(append) ๋ฐ์ดํ„ฐ ์‚ญ์ œ(popleft) ํ ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ๋Š” ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ(Overflow)์™€ ์–ธ๋”ํ”Œ๋กœ์šฐ(Underflow)๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š๋„๋ก ์œ ์˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค..