본문 바로가기
배우는 것들/python

백준 16929- Two Dots

by Ho.virus 2022. 8. 5.
n,m = map(int,input().split())
arr = [input() for _ in range(n)]
visit = [[0 for _ in range(m)] for _ in range(n)]

def dfs(x,y,cnt):
    global ans, i , j #cnt를 글로벌 인자로 활용하면 그래프 연산 도중 의도하지 않은 카운트까지 합산하게 됨
                      # 재귀함수의 특성을 활용해 모수로 사용
    if ans == 'Yes': # 결과가 이미 나왔을 경우 연산시간 단축을 위해 생략
        return
    
    dx = [-1,1,0,0]
    dy = [0,0,-1,1]


    for z in range(4):
        nx = x + dx[z]
        ny = y + dy[z]
        
        if nx < 0 or nx >= m or ny < 0 or ny >= n:
            continue
        elif nx == i and ny == j and cnt >= 4: #정사각형의 한바퀴이므로 4칸 이상을 탐색한 후 제자리로 돌아와야 한바퀴로 인정
             ans = 'Yes'
    
        elif visit[ny][nx] == 1:
            continue

        elif arr[ny][nx] == grp:
            visit[ny][nx] = 1
            dfs(nx,ny,cnt + 1)
            visit[ny][nx] = 0
ans = 'No' #사이클이 없으면 그대로 no 출력
      
for i in range(m):
    for j in range(n): 
        grp = arr[j][i]
        visit[j][i] = 1
        dfs(i,j,cnt = 1)
        visit[j][i] = 0
        
print(ans)

 

자기전에 이것만 풀고 자야지 하고 시작한 문제가... 지금까지...

출력을 Yes랑 No로 해야되는데

YES랑 NO로 해서 2시간동안 맞는데 왜 틀리지만 반복함... 한번은 갈아엎고

맞왜틀 맞왜틀 신나는 노래

 

 

16929번: Two Dots

첫째 줄에 게임판의 크기 N, M이 주어진다. 둘째 줄부터 N개의 줄에 게임판의 상태가 주어진다. 게임판은 모두 점으로 가득차 있고, 게임판의 상태는 점의 색을 의미한다. 점의 색은 알파벳 대문

www.acmicpc.net

 

'배우는 것들 > python' 카테고리의 다른 글

[ERROR] volatile gpu utils 0, GPU 병목  (0) 2024.03.04
백준 11724번 - 연결요소의 갯수  (0) 2022.07.26
백준 1260- DFS와 BFS  (0) 2022.07.25
백준 1463 - 1로 만들기  (0) 2022.07.06
백준 11057번 - 오르막수  (0) 2022.06.20