-
[λ°±μ€] 3184 μ with PythonPS 2021. 10. 19. 22:21728x90λ°μν
π BOJ 3184 μ
π‘ 쑰건
R
κ³ΌC
κ° μ£Όμ΄μ§λ©°(3 β€ R, C β€ 250)
, κ° μλ λ§λΉμ νκ³Ό μ΄μ μλ₯Ό μλ―Ένλ€.R
κ°μ μ€μC
κ°μ κΈμλ₯Ό κ°μ§λ€. μ΄λ€μ λ§λΉμ ꡬ쑰(μΈν리, μ, λλμ μμΉ)λ₯Ό μλ―Ένλ€.κΈμ
'.' (μ )
μ λΉ νλλ₯Ό μλ―Ένλ©°, κΈμ'#'λ μΈν리
λ₯Ό,'o'λ μ
,'v'λ λλ
λ₯Ό μλ―Ένλ€.ν μΉΈμμ μν, μμ§λ§μΌλ‘ μ΄λν μ μλ€.
μμ μμ μμ μκ° λλμ μλ³΄λ€ λ§λ€λ©΄ μ΄κΈ°κ³ , λλκ° λ§μΌλ©΄ μμ μ¬λΌμ§λ€.λμ΄ μ°μ νμ(BFS) μκ³ λ¦¬μ¦ μ νμ λ¬Έμ
π₯ μμ€ μ½λ
from sys import stdin from collections import deque n, m = map(int, stdin.readline().split()) board = [] for n in range(n): board.append(list(stdin.readline().rstrip())) dx, dy = [1, -1, 0, 0], [0, 0, -1, 1] visited = set() def bfs(x, y): vo = [set(), set()] q = deque() q.append((x, y)) visited.add((x, y)) while q: x, y = q.popleft() if board[x][y] == 'o': vo[1].add((x, y)) elif board[x][y] == 'v': vo[0].add((x, y)) for i in range(4): nx, ny = dx[i] + x, dy[i] + y if -1 < nx < n and -1 < ny < m: if board[nx][ny] != '#' and (nx, ny) not in visited: q.append((nx, ny)) visited.add((nx, ny)) if len(vo[0]) < len(vo[1]): return 0, len(vo[1]) else: return len(vo[0]), 0 answer = [0, 0] for i in range(n): for j in range(m): if (board[i][j] == 'v' or board[i][j] == 'o') and (i, j) not in visited: v, o = bfs(i, j) answer[0] += o answer[1] += v print(*answer)
π μμ λ° μ€νκ²°κ³Ό
μμ
6 6 ...#.. .##v#. #v.#.# #.o#.# .###.# ...###
μ€νκ²°κ³Ό
0 2
β¨οΈ λ¬Έμ νμ΄
μκ³Ό λλμ μλ₯Ό λ΄μ
answer
리μ€νΈλ₯Ό κ°κ°μ μμλ₯Ό0
μΌλ‘ μ΄κΈ°ννμ¬ μμ±νλ€.
μ΄λ―Έ λ°©λ¬Ένλ κ³³μ μ’νλ₯Ό λ΄μset μλ£ν visited
λ₯Ό μμ±νλ€.μ΄μ€ λ°λ³΅λ¬ΈμΌλ‘ νλλ₯Ό μννλ©΄μ, λ€μ λκ°μ§μ ν΄λΉνλ©΄
BFS
λ₯Ό μννλ€.(i, j)
κ°visited
μ λ°©λ¬Ένμ§ μμμ λ(i, j)
μ ν΄λΉνλ νλ κ°μ΄v νΉμ o
μΌ λ
bfs ν¨μ
μμvo
λΌλset()
μ΄ λκ° λ΄κΈ΄ 리μ€νΈλ₯Ό μμ±ν΄μ€λ€.
νμλbfs
λ₯Ό μννκΈ° μν΄ λ°μμ¨x, y
κ°μ λ£μ΄μ£Όκ³ , νκ° λΉ λκΉμ§ μννλ€.νμμ λ½μλΈ
x, y
μ’νκ° νλμμ μμΈμ§ λλμΈμ§ ꡬ문νμ¬vo\[1\] νΉμ v\[0\]
μ μ μ₯ν΄μ€λ€.
νμ¬ μ’νμμ μνμ’μ°λ₯Ό μννλ©° λ°©λ¬Ένμ§ μμκ³ ,#
μ΄ μλ νλμ μ’νλ₯Ό νμvisited
μ λ£μ΄μ€λ€.νκ° λΉμ΄
while λ°λ³΅λ¬Έ
μ΄ μ’ λ£λλ©΄, μμ μμ λλμ μλ₯Ό λΉκ΅νμ¬
μκ° λ μμ μͺ½μ 0μΌλ‘, ν° μͺ½μ μ«μ κ·Έλλ‘ λ°ννλ€.bfs ν¨μμμ λ°νλ°μ κ°μ answer μμμ κ°κ° λν΄μ€λ€.
πΎ λλμ
- BFS λ¬Έμ μκ³ , μ½κ² ν μ μλ λ¬Έμ μλ€.
- λ€λ₯Έ μ¬λμ΄ λ΄ κΈμ λ³΄κ³ μ μ΄ν΄ν μ μμμ§λ λͺ¨λ₯΄κ² λ€.
- μ‘°κΈ λ μ½κ² μ€λͺ ν μ μκ² λ λμ μμ€μ μ΄ν΄κ° νμν κ² κ°λ€.
λ°μν'PS' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[λ°±μ€] 12100 2048(easy) with Python (0) 2021.10.25 [λ°±μ€] 1043 κ±°μ§λ§ with Python (0) 2021.10.20 [λ°±μ€] 2343 κΈ°ν λ μ¨ with Python (0) 2021.10.19 [λ°±μ€] 1743 μμλ¬Ό νΌνκΈ° with Python (0) 2021.10.18 [λ°±μ€] 1713 ν보 μΆμ²νκΈ° with Python (0) 2021.10.18