ν°μ€ν 리 λ·°
728x90
λ°μν
λ¬Έμ
λ¬Έμ νμ΄
νΉμ μ§μ μ μμμΌλ‘ κ°μ μμ κ°μ§ μΈμ΄ν΄μ΄ μλμ§ νμΈνκ³ λ°ννλ λ¬Έμ μ΄λ€. λ°λΌμ νΉμ μ§μ μμ DFSλ₯Ό ν΅ν΄ μ, ν, μ’, μ°λ‘ μννλ κ°μ μΆλ° μ§μ κ³Ό κ°μ μμΈμ§μ, λ°©λ¬Έμ¬λΆλ₯Ό νλ¨νκ² λλ©΄ μΈμ΄ν΄ μ¬λΆλ₯Ό νμΈ ν μ μλ€.
DFSλ₯Ό ν΅ν΄ νμν λ λ€μκ³Ό κ°μ΄ μ§ννλ©΄ λ΅μ μ°Ύμ μ μλ€.
- μ, ν, μ’, μ° νμ μ 0 <= x < n, 0 <= y < mκ³Ό κ°μ΄ μμμ λ²μ΄λμ§ μλμ§ νμΈνμ¬μΌ νλ€.
-
μ΅μ μΈμ΄ν΄μ μ΄λ£¨λ μ μ κ°μλ 4κ° μ΄λ€.
- μ μ κ°μκ° 4κ° μ΄μμ΄κ³ , μμμ μΌλ‘ λμμ¨λ€λ©΄ μΈμ΄ν΄μ΄ μλ κ²μ΄λ€.
- λ°±νΈλνΉμ΄ νμνλ―λ‘, μ¬κ· νΈμΆ ν μλ λλ‘ μ΄κΈ°ννμ¬μΌ νλ€.
μ½λ
from sys import stdin
def visitable(x, y):
return 0 <= x < n and 0 <= y < m and not visited[x][y]
def dfs(cnt, start, cur, color):
for x, y in dirs:
next_x, next_y = cur[X] + x, cur[Y] + y
# 4μ μ΄μμ λ°©λ¬Ένκ³ , μΆλ°μ κ³Ό κ°λ€λ©΄ μΈμ΄ν΄μ΄ μλ κ²μ΄λ€.
if cnt >= 4 and start == [next_x, next_y]:
print('Yes')
exit()
if visitable(next_x, next_y) and graph[next_x][next_y] == color:
visited[next_x][next_y] = True
dfs(cnt + 1, start, [next_x, next_y], color)
visited[next_x][next_y] = False
if __name__ == "__main__":
answer = False
X, Y = 0, 1
n, m = map(int, stdin.readline().split())
graph = [list(stdin.readline().strip()) for _ in range(n)]
visited = [[False] * m for _ in range(n)]
dirs = ((0, 1), (0, -1), (1, 0), (-1, 0))
for x in range(n):
for y in range(m):
if not visited[x][y]:
visited[x][y] = True
dfs(1, [x, y], [x, y], graph[x][y])
print('No')
728x90
λ°μν
'π¨βπ» μ½λ©ν μ€νΈ > λ°±μ€' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
λ°±μ€: 12851 μ¨λ°κΌμ§ 2 (0) | 2020.07.24 |
---|---|
λ°±μ€: 1697 μ¨λ°κΌμ§ (0) | 2020.07.23 |
λ°±μ€: 1707 μ΄λΆ κ·Έλν (0) | 2020.07.22 |
λ°±μ€: 7526 λμ΄νΈμ μ΄λ (0) | 2020.07.22 |
λ°±μ€: 7576 ν λ§ν (0) | 2020.07.22 |
λκΈ
κΈ λ³΄κ΄ν¨
μ΅κ·Όμ μ¬λΌμ¨ κΈ
μ΅κ·Όμ λ¬λ¦° λκΈ