[골드4] 16929번 : Two Dots

Quesuemon·2022년 9월 3일
0

코딩테스트 준비

목록 보기
109/111

🛠 문제

https://www.acmicpc.net/problem/16929


👩🏻‍💻 해결 방법

배열의 한 점씩 체크하며 dfs를 통해 상하좌우가 같으면 계속해서 탐색해주었다


소스 코드

N,M = map(int,input().split())
arr = [list(map(str,input())) for _ in range(N)]
visited = [[False]*M for _ in range(N)]
dy = [0,0,1,-1]
dx = [1,-1,0,0]
flag=False

def dfs(y, x, py, px, ball):
    if visited[y][x]==1:
        return True
    visited[y][x]=True
 
    for i in range(4):
        ny = y + dy[i]
        nx = x + dx[i]
        if ny!=py or nx!=px:
            if 0 <= ny < N and 0 <= nx < M and arr[ny][nx]==ball:
                if dfs(ny, nx, y, x, ball): 
                  return True
    return False
 
for i in range(N):
    for j in range(M):
        if visited[i][j]:
            continue
        if dfs(i, j, 0, 0, arr[i][j]):
            flag=True
            break    
          
print("Yes") if flag else print("No")

0개의 댓글

관련 채용 정보