[๋ฐฑ์ค€] 16918 ๋ด„๋ฒ„๋งจ (python ํŒŒ์ด์ฌ)

2024. 3. 23. 20:04ยท๐Ÿงฉ Problem Solving/[๋ฐฑ์ค€]
 

16918๋ฒˆ: ๋ด„๋ฒ„๋งจ

์ฒซ์งธ ์ค„์— R, C, N (1 ≤ R, C, N ≤ 200)์ด ์ฃผ์–ด์ง„๋‹ค. ๋‘˜์งธ ์ค„๋ถ€ํ„ฐ R๊ฐœ์˜ ์ค„์— ๊ฒฉ์žํŒ์˜ ์ดˆ๊ธฐ ์ƒํƒœ๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ๋นˆ ์นธ์€ '.'๋กœ, ํญํƒ„์€ 'O'๋กœ ์ฃผ์–ด์ง„๋‹ค.

www.acmicpc.net


 

 

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
'๐Ÿงฉ Problem Solving/[๋ฐฑ์ค€]' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [๋ฐฑ์ค€] 4179 ๋ถˆ! (python ํŒŒ์ด์ฌ)
  • [๋ฐฑ์ค€] 2212 ์„ผ์„œ (python ํŒŒ์ด์ฌ)
  • [๋ฐฑ์ค€] 1697 ์ˆจ๋ฐ”๊ผญ์งˆ (python ํŒŒ์ด์ฌ)
  • [๋ฐฑ์ค€] 15666 N๊ณผ M 12 (python ํŒŒ์ด์ฌ)
์ œ๋ด‰์•„
์ œ๋ด‰์•„
  • ์ œ๋ด‰์•„
    Overthinking
    ์ œ๋ด‰์•„
    fake it till you make it.
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (106)
      • ๐Ÿงฉ Problem Solving (83)
        • [๋ฐฑ์ค€] (74)
        • [ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] (7)
        • [SW Expert Academy] (1)
        • [์•Œ๊ณ ๋ฆฌ์ฆ˜ for PS] (1)
      • ๐Ÿ“ฆ Data Structure (2)
      • ๐Ÿ“œ Language (14)
        • [python] (14)
      • ๐Ÿ–ค Git (1)
      • ๐ŸŒ† ์ผ์ƒ (4)
        • ๐Ÿ’ฌ ๋ฒฝ๋ณด๊ณ  ๋งํ•˜๊ธฐ (4)
      • ๐Ÿ—„๏ธ ๊ธฐํƒ€ (2)
      • ๐Ÿ”ต css (0)
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

    • ํ™ˆ
    • ํƒœ๊ทธ
    • ๋ฐฉ๋ช…๋ก
  • ๋งํฌ

  • ๊ณต์ง€์‚ฌํ•ญ

  • ์ธ๊ธฐ ๊ธ€

  • ํƒœ๊ทธ

    ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค
    Python
    ๋ฐ๋ธŒ์ฝ”์Šค
    ๋ถ„ํ•  ์ •๋ณต
    ์ •์ฒ˜๊ธฐ
    ๊ตฌํ˜„
    DFS
    ๋ˆ„์ ํ•ฉ
    ๋ฐฑ์ค€
    DP
    ํ”Œ๋กœ์ด๋“œ์›Œ์…œ
    ๋ถ€๋ถ„ํ•ฉ
    BFS
    ํŒฐ๋ฆฐ๋“œ๋กฌ
    ํŒŒ์ด์ฌ
    ๊ทธ๋ฆฌ๋””
    ์žฌ๊ท€
    ํˆฌํฌ์ธํ„ฐ
    ๋ฐฑํŠธ๋ž˜ํ‚น
    ๋‹ค์ต์ŠคํŠธ๋ผ
    Bruteforce
    ํ”Œ๋กœ์ด๋“œ ์™€์ƒฌ
    imos
    ๋ƒ…์ƒ‰
    boj
    ์œ„์ƒ์ •๋ ฌ
    slicing
    ์Šคํƒ
    SWEA
    ๋ธŒ๋ฃจํŠธํฌ์Šค
  • ์ตœ๊ทผ ๋Œ“๊ธ€

  • ์ตœ๊ทผ ๊ธ€

  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.3
์ œ๋ด‰์•„
[๋ฐฑ์ค€] 16918 ๋ด„๋ฒ„๋งจ (python ํŒŒ์ด์ฌ)
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”