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

๋ชฉ๋กํ ์ž๋ฃŒ๊ตฌ์กฐ (5)

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) ๋ฌธ์ œํ’€์ด ์ „๋žต ์ƒ์–ด๋Š” ๊ฐ€๋Šฅํ•œ ์ตœ๋Œ€ํ•œ ๋งŽ์€ ๋ฌผ๊ณ ..

[์ž๋ฃŒ๊ตฌ์กฐ] ์šฐ์„ ์ˆœ์œ„ ํ(Priority Queue)์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์ž!(+Python ๊ตฌํ˜„)

๐Ÿ“š ๋ชฉ์ฐจ 1. ์šฐ์„ ์ˆœ์œ„ ํ(Priority Queue)๋ž€? 2. ํž™(Heap) ์ž๋ฃŒ๊ตฌ์กฐ 2.1. ํž™ ์ž๋ฃŒ๊ตฌ์กฐ๋ž€? 2.2. ์šฐ์„ ์ˆœ์œ„ ํ ๊ตฌํ˜„ ๋ฐฉ์‹: ๋ฆฌ์ŠคํŠธ vs ํž™ 3. ํž™ ๊ธฐ๋ฐ˜์˜ ์šฐ์„ ์ˆœ์œ„ ํ ๊ตฌํ˜„(Python) 3.1. heapq ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์†Œ๊ฐœ 3.1.1. ํž™ ์›์†Œ ์ถ”๊ฐ€(heappush) 3.1.2. ํž™ ์›์†Œ ์‚ญ์ œ(heappop) 3.1.3. ๋ฆฌ์ŠคํŠธ๋ฅผ ํž™์œผ๋กœ ๋ณ€๊ฒฝ(heapify) 3.2. ํž™ ๊ธฐ๋ฐ˜์˜ ์šฐ์„ ์ˆœ์œ„ ํ ๊ตฌํ˜„ ์˜ˆ์‹œ 1. ์šฐ์„ ์ˆœ์œ„ ํ(Priority Queue)๋ž€? ์šฐ์„ ์ˆœ์œ„ ํ๋Š” ๋ง ๊ทธ๋Œ€๋กœ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๊ฐ€์žฅ ๋†’์€ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์žฅ ๋จผ์ € ์ถ”์ถœํ•˜๋Š” ์ž๋ฃŒ๊ตฌ์กฐ์ž…๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ํ(Queue) ์ž๋ฃŒ๊ตฌ์กฐ๋Š” ์„ ์ž…์„ ์ถœ ๋ฐฉ์‹์œผ๋กœ์„œ ๊ฐ€์žฅ ๋จผ์ € ์‚ฝ์ž…๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์žฅ ๋จผ์ € ์ถ”์ถœํ•ฉ๋‹ˆ๋‹ค. ๊ฐ„๋‹จํ•˜๊ฒŒ ํŠน์ง•์ด ์œ ์‚ฌํ•œ ์ž๋ฃŒ๊ตฌ์กฐ๋“ค์˜ ..

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

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