BFS๋๋์ ๊ตฌํ ๋ฌธ์
์์ด๋์ด
ํญํ์ ์ถ๊ฐํ๊ณ ํฐํธ๋ฆฌ๋ ๊ณผ์ ์์ ํ๋ฅผ ์ฌ์ฉํ๋ฉด ํธํ ๊ฑฐ ๊ฐ์ deque๋ฅผ ์ฌ์ฉํ๋ค.
1์ด๋ง๋ค ์ด๋ป๊ฒ ๊ฒฉ์ํ์ ๋ณํ๋์ง ์๊ฐํ๋ฉฐ ์ฝ๋๋ฅผ ์์ฑํ๋ค.
์ ์ฒด ์ฝ๋
from collections import deque
dx = [0, 0, -1, 1]
dy = [1, -1, 0, 0]
grid = [] # ๊ฒฉ์ํ
boomList = deque() # ํญํ ์ขํ ๋ฆฌ์คํธ
R, C, N = map(int, input().split())
for i in range(R): # ๊ฒฉ์ํ ์ ๋ณด ์
๋ ฅ
row = list(input())
for j in range(C):
if row[j] == 'O': # ์ฒ์ ํญํ ์ขํ๋ค ์ ์ฅ
boomList.append([i, j])
grid.append(row)
t = 1 # ์ฒ์ 1์ด๊ฐ ์ง๋ ํ์ ๊ฒฉ์ํ์ ์๋ฌด ์ผ๋ ๋ฒ์ด์ง์ง ์๊ธฐ ๋๋ฌธ์, ์ด๊ธฐ ์๊ฐ์ 1๋ก ์ก์๋ ๋๋ค.
while t < N:
for i in range(R): # ํญํ ์ฑ์๋ฃ๊ธฐ
for j in range(C):
if grid[i][j] == '.':
grid[i][j] = 'O'
t += 1
if t == N:
break
while boomList: # ํญํ ํฐํธ๋ฆฌ๊ธฐ
x, y = boomList.popleft()
grid[x][y] = '.'
for i in range(4):
nx, ny = x + dx[i], y + dy[i]
if 0 <= nx < R and 0 <= ny < C:
grid[nx][ny] = '.'
for i in range(R): # ํญํ ํฐ์ง๊ณ ๋จ์ ํญํ๋ค ์ ์ฅ
for j in range(C):
if grid[i][j] == 'O':
boomList.append([i, j])
t += 1
for g in grid:
print(''.join(g))
์ฝ๋ ์ค๋ช
for i in range(R):
row = list(input())
for j in range(C):
if row[j] == 'O': # ์ฒ์ ํญํ ์ขํ๋ค ์ ์ฅ
boomList.append([i, j])
grid.append(row)
๊ฐ์ฅ ์ฒ์์ ์๋ ํญํ๋ค์ ์ขํ๋ฅผ boomList์ ์ ์ฅํด๋๋ค.
while t < N:
for i in range(R): # ํญํ ์ฑ์๋ฃ๊ธฐ
for j in range(C):
if grid[i][j] == '.':
grid[i][j] = 'O'
t += 1
if t == N:
break
while boomList: # ํญํ ํฐํธ๋ฆฌ๊ธฐ
x, y = boomList.popleft()
grid[x][y] = '.'
for i in range(4):
nx, ny = x + dx[i], y + dy[i]
if 0 <= nx < R and 0 <= ny < C:
grid[nx][ny] = '.'
for i in range(R): # ํญํ ํฐ์ง๊ณ ๋จ์ ํญํ๋ค ์ ์ฅ
for j in range(C):
if grid[i][j] == 'O':
boomList.append([i, j])
t += 1
์๊ฐ์ด N์ด๊ฐ ๋ ๋๊น์ง ๋ฌธ์ ์์ ์ ์ํ ๊ณผ์ ์ ๋ฐ๋ณตํด ์ค๋ค.
1. ๋น๊ณณ์ ํญํ์ ์ฑ์์ค๋ค.
2. 1์ด ๊ฒฝ๊ณผ, ์๊ฐ์ด N์ด๊ฐ ๋๋ฉด break
3. boomList์ ์๋ ํญํ๋ค๋ง ํฐํธ๋ ค์ค๋ค.
4. ํญํ์ด ํฐ์ง๊ณ , ๋จ์์๋ ํญํ๋ค๋ง boomList์ ์ถ๊ฐํด ์ค๋ค.
5. 1์ด ๊ฒฝ๊ณผ.
'๐งฉ Problem Solving > [๋ฐฑ์ค]' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] 4179 ๋ถ! (python ํ์ด์ฌ) (0) | 2024.03.28 |
---|---|
[๋ฐฑ์ค] 2212 ์ผ์ (python ํ์ด์ฌ) (0) | 2024.03.27 |
[๋ฐฑ์ค] 1697 ์จ๋ฐ๊ผญ์ง (python ํ์ด์ฌ) (0) | 2024.03.22 |
[๋ฐฑ์ค] 15666 N๊ณผ M 12 (python ํ์ด์ฌ) (0) | 2024.03.21 |
[๋ฐฑ์ค] 14940 ์ฌ์ด ์ต๋จ๊ฑฐ๋ฆฌ (python ํ์ด์ฌ) (0) | 2024.03.20 |