-
1. 문제
2. 코드
12345678910111213141516171819202122232425262728293031323334353637383940414243from collections import dequefor t in range(int(input())):visit = [0]*100001prev = [-1]*100001A, B = map(int,input().split())q = deque()q.append(A)visit[A] = 1while q:nx= q.popleft()if nx == B:breakD = (lambda x: 2*x%10000)(nx)S = 9999 if (nx ==0) else nx+1kiri = len(str(nx)) - 1 #십집수의 길이#print(kiri)L = (lambda x: x%(10**kiri)*10 + x//(10**kiri))(nx)R = (lambda x: x//10 + x%10*(10**kiri))(nx)cnt = -1for i in [D,S,L,R]:cnt += 1 #i를 방문했어도 카운트 해야 하므로 방문체크 위에서 카운트를 한다.if visit[i] == 1:continueq.append(i)prev[i] = [nx,cnt]visit[i] = 1path = []p = ['D','S','L','R']while prev[B] != -1:path.append(prev[B][1])B = prev[B][0]for i in range(len(path)-1,-1,-1):print(p[path[i]], end='')print()cs 3. 후기
처음에는 bfs를 돌 때마다 경로를 스트링으로 저장했는데 시간초과가 나서 prev라는 리스트를 만들고 바로 전 경로를 저장했다. 근데 그래도 시간초과가 난다. 파이썬으로 작성한 코드는 맞았습니다가 없었다. 다음부터는 c++로 해야겠다.
'알고리즘 > 백준' 카테고리의 다른 글
2251 물통 (0) 2019.03.12 1525 퍼즐 (0) 2019.03.12 7453 합이 0인 네 정수 (0) 2019.03.10 2143 두 배열의 합 (0) 2019.03.10 1028 부분수열의 합2 (0) 2019.03.09