문제링크 : https://school.programmers.co.kr/learn/courses/30/lessons/150365
import sys
sys.setrecursionlimit(10**8)
minVal = 'z' # 아스키코드가 가장 높은 문자
dx,dy = [1,0,0,-1], [0,-1,1,0]
def solution(n, m, x, y, r, c, k):
x -= 1
y -= 1
r -= 1
c -= 1
direction = ['d', 'l', 'r', 'u']
def dfs(a,b,s):
global minVal
if len(s) == k:
if a == r and b == c and s < minVal:
minVal = s
return
if s > minVal:
return
if abs(a - r) + abs(b - c) > k - len(s) or (abs(a - r) + abs(b - c)) % 2 != (k - len(s))%2:
return
for i in range(4):
nx = a + dx[i]
ny = b + dy[i]
if 0<=nx<n and 0<=ny<m:
dfs(nx,ny, s+direction[i])
dfs(x,y,'')
if minVal == 'z':
return 'impossible'
else:
return minVal
아무리봐도 맞는것 같은데 자꾸 시간초과가 나서 다른 사람의 풀이를 봤더니
sys.setrecursionlimit(재귀 깊이 제한) 을 해주지 않아서 시간초과가 발생한걸 알게 되었다.