[BaekJoon] 백준 9019번 DSLR
문제: https://www.acmicpc.net/problem/9019
내코드
가장 빠른 경우를 찾은 전형적인 BFS문제였다.
그런데 어떤 식으로 풀어도 시간초과 문제가 해결되지 않아서
pypy로 풀었더니 해결되었다.
# BaekJoon9019.py
from collections import deque
import sys
def solution():
visited = [False for _ in range(10000)]
queue = deque([[a, ""]])
visited[a] = True
while len(queue) != 0:
value = queue.popleft()
if value[0] == b:
return value[1]
# D
next_value = (2 * value[0]) % 10000
if not visited[next_value]:
queue.append([next_value, value[1] + "D"])
visited[next_value] = True
# S
if value[0] == 0:
if not visited[9999]:
queue.append([9999, value[1] + "S"])
visited[9999] = True
else:
next_value = value[0] - 1
if not visited[next_value]:
queue.append([next_value, value[1] + "S"])
visited[next_value] = True
# L
next_value = (value[0] % 1000) * 10 + int(value[0] / 1000)
if not visited[next_value]:
queue.append([next_value, value[1] + "L"])
visited[next_value] = True
# R
next_value = int(value[0] / 10) + (value[0] % 10) * 1000
if not visited[next_value]:
queue.append([next_value, value[1] + "R"])
visited[next_value] = True
input = sys.stdin.readline
N = int(input())
for i in range(N):
a, b = map(int, input().split())
print(solution())
728x90
반응형
'CS > Algorithm 문제' 카테고리의 다른 글
[BaekJoon] 백준 9461번 파도반 수열 (0) | 2021.07.24 |
---|---|
[BaekJoon] 백준 9375번 패션왕 신해빈 (0) | 2021.07.24 |
[BaekJoon] 백준 2606번 바이러스 (0) | 2021.07.17 |
[BaekJoon] 백준 17626번 Four Squares (0) | 2021.07.17 |
[BaekJoon] 백준 1931번 회의실 배정 (0) | 2021.07.16 |