[BaekJoon] λ°±μ€ 9019λ² : DSLR
Updated:
9019λ² : DSLR
[BaekJoon] λ°±μ€ 1697λ² : μ¨λ°κΌμ§ μ΄λ λΉμ·ν λ¬Έμ ..
μ¨λ°κΌμ§ λ¬Έμ λ₯Ό νλλ 미리 κ·Έλνλ₯Ό λ€ κ·Έλ € λκ³ νμμ νλλ° μ΄ λ¬Έμ λ₯Ό νλ©΄μ λκΌμ§λ§ κ·Έλ΄ νμκ° μμλ€ !!
D, S, L, R μ μ°μ°μ ν΅ν΄ λμ¨ κ²°κ³Όλ₯Ό νμ λ£μ΄κ°λ©° BFS λ₯Ό νλ©΄ λλ€..
κ·Έλ°λ° μ²μμ L, R μ°μ°μ μλͺ» μ΄ν΄νκ³ μμ΄ μμ² μ λ₯Ό λ¨Ήμλ€.
1 μλ€κ° L μ°μ°μ μ·¨νλ©΄ 1μ΄ λλκ² μλλΌ 10 μ΄ λκ³
1 μλ€κ° R μ°μ°μ μ·¨νλ©΄ 1μ΄ λλκ² μλλΌ 1000 μ΄ λλ€.
0001 μ΄λΌκ³ μκ°νκ³ μ°μ°μ νμ΄μΌ νλ€.. κ·Έλ°μ€λ λͺ¨λ₯΄κ³ λ¨μν κ·Έ μ«μλ‘λ§ νλ μ€ μκ³ μμλ€.
L, R μ°μ°μ μ‘°κΈ μκ°ν΄λ³΄λ©΄ μμμΌλ‘ λ§λ€ μ μλ€
λ§μ½ 4758 μ L μ°μ° νκ³ μΆλ€λ©΄ 7580 + 4 λ‘ λ§λ€λ©΄ λκΈ° λλ¬Έμ 4758 % 1000 * 10 + 4758 % 1000 μ νλ©΄ λλ€.
μ΄λ κ² νλλ° μκ°μ΄κ³Όκ° λ°μν΄ pypy3 μΌλ‘ μ μΆ ν΄ ν΅κ³Όνλ€.
import sys
from collections import deque
def find_min_route(a, b):
visit = dict()
start, end = a, b
queue = deque([[start, '']])
visit[start] = 1
while queue:
cur_node, cur_cal = queue.popleft()
visit[cur_node] = 1
D_i, S_i, L_i, R_i = D(cur_node), S(cur_node), L(cur_node), R(cur_node)
if D_i not in visit:
if D_i == end:
return cur_cal + 'D'
visit[D_i] = 1
queue.append([D_i, cur_cal + 'D'])
if S_i not in visit:
if S_i == end:
return cur_cal + 'S'
visit[S_i] = 1
queue.append([S_i, cur_cal + 'S'])
if L_i not in visit:
if L_i == end:
return cur_cal + 'L'
visit[L_i] = 1
queue.append([L_i, cur_cal + 'L'])
if R_i not in visit:
if R_i == end:
return cur_cal + 'R'
visit[R_i] = 1
queue.append([R_i, cur_cal + 'R'])
def D(a):
return a * 2 % 10000
def S(a):
return a - 1 if a != 0 else 9999
def L(a):
return a % 1000 * 10 + a // 1000
def R(a):
return a % 10 * 1000 + a // 10
for _ in range(int(input())):
my_a, my_b = map(int, sys.stdin.readline().rsplit())
print(find_min_route(my_a, my_b))
Leave a comment