보글보글 개발일지
Published 2023. 10. 28. 00:36
[백준/1987][Python] 알파벳 알고리즘
반응형

문제

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

 

Baekjoon Online Judge

Baekjoon Online Judge 프로그래밍 문제를 풀고 온라인으로 채점받을 수 있는 곳입니다.

www.acmicpc.net

풀이

왜 시간초과가 날까 DFS 연습하려고 고른 문제인데 DFS로 풀면 시초 뜬다.. 솔직히 BFS가 더 쉬울 것 같긴하고, 시초도 안뜰 것 같다. 그리고 dx,dy순서에 따라 시초 나는지 안나는지도 결정되니까 아무리 생각해도 DFS로 완탐하는 문제는 아닌 것 같다. pypy3로 해야 통과되기도 하고..

코드

n,m = map(int,input().split())
arr = [list(map(str,input())) for _ in range(n)]
dx = [-1, 1, 0, 0]
dy = [0, 0, -1, 1]
ans = 0
vis = set()
def bt(x,y,count):
    global ans
    ans = max(ans,count)
    for i in range(4):
        nx = x+dx[i]
        ny = y+dy[i]
        if 0<=nx<n and 0<=ny<m and not arr[nx][ny] in vis:
            vis.add(arr[nx][ny])
            bt(nx,ny,count+1)
            vis.remove(arr[nx][ny])
vis.add(arr[0][0])
bt(0,0,1)
print(ans)
반응형

'알고리즘' 카테고리의 다른 글

[백준/1912][Python] 연속합  (1) 2024.02.11
[백준/1058][Python] 친구  (0) 2024.02.01
[백준/2294][Python] 동전2  (0) 2023.10.26
[프로그래머스/181188][C++] 요격 시스템  (0) 2023.10.21
[백준/17298][C++] 오큰수  (1) 2023.10.21
profile

보글보글 개발일지

@보글

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!