[BOJ][๐ŸŸก5][๋ฐฑ์ค€#09019] DSLR

์ž‘์„ฑ:    

์—…๋ฐ์ดํŠธ:

์นดํ…Œ๊ณ ๋ฆฌ:

ํƒœ๊ทธ: , , ,

๋ฌธ์ œ ์ถœ์ฒ˜

BAEKJOON Online Judge #9019


๋ฌธ์ œ

๋„ค ๊ฐœ์˜ ๋ช…๋ น์–ด D, S, L, R ์„ ์ด์šฉํ•˜๋Š” ๊ฐ„๋‹จํ•œ ๊ณ„์‚ฐ๊ธฐ๊ฐ€ ์žˆ๋‹ค. ์ด ๊ณ„์‚ฐ๊ธฐ์—๋Š” ๋ ˆ์ง€์Šคํ„ฐ๊ฐ€ ํ•˜๋‚˜ ์žˆ๋Š”๋ฐ, ์ด ๋ ˆ์ง€์Šคํ„ฐ์—๋Š” 0 ์ด์ƒ 10,000 ๋ฏธ๋งŒ์˜ ์‹ญ์ง„์ˆ˜๋ฅผ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ฐ ๋ช…๋ น์–ด๋Š” ์ด ๋ ˆ์ง€์Šคํ„ฐ์— ์ €์žฅ๋œ n์„ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ณ€ํ™˜ํ•œ๋‹ค. n์˜ ๋„ค ์ž๋ฆฟ์ˆ˜๋ฅผ d1, d2, d3, d4๋ผ๊ณ  ํ•˜์ž(์ฆ‰ n = ((d1 ร— 10 + d2) ร— 10 + d3) ร— 10 + d4๋ผ๊ณ  ํ•˜์ž)

D: D ๋Š” n์„ ๋‘ ๋ฐฐ๋กœ ๋ฐ”๊พผ๋‹ค. ๊ฒฐ๊ณผ ๊ฐ’์ด 9999 ๋ณด๋‹ค ํฐ ๊ฒฝ์šฐ์—๋Š” 10000 ์œผ๋กœ ๋‚˜๋ˆˆ ๋‚˜๋จธ์ง€๋ฅผ ์ทจํ•œ๋‹ค. ๊ทธ ๊ฒฐ๊ณผ ๊ฐ’(2n mod 10000)์„ ๋ ˆ์ง€์Šคํ„ฐ์— ์ €์žฅํ•œ๋‹ค. S: S ๋Š” n์—์„œ 1 ์„ ๋บ€ ๊ฒฐ๊ณผ n-1์„ ๋ ˆ์ง€์Šคํ„ฐ์— ์ €์žฅํ•œ๋‹ค. n์ด 0 ์ด๋ผ๋ฉด 9999 ๊ฐ€ ๋Œ€์‹  ๋ ˆ์ง€์Šคํ„ฐ์— ์ €์žฅ๋œ๋‹ค. L: L ์€ n์˜ ๊ฐ ์ž๋ฆฟ์ˆ˜๋ฅผ ์™ผํŽธ์œผ๋กœ ํšŒ์ „์‹œ์ผœ ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ๋ ˆ์ง€์Šคํ„ฐ์— ์ €์žฅํ•œ๋‹ค. ์ด ์—ฐ์‚ฐ์ด ๋๋‚˜๋ฉด ๋ ˆ์ง€์Šคํ„ฐ์— ์ €์žฅ๋œ ๋„ค ์ž๋ฆฟ์ˆ˜๋Š” ์™ผํŽธ๋ถ€ํ„ฐ d2, d3, d4, d1์ด ๋œ๋‹ค. R: R ์€ n์˜ ๊ฐ ์ž๋ฆฟ์ˆ˜๋ฅผ ์˜ค๋ฅธํŽธ์œผ๋กœ ํšŒ์ „์‹œ์ผœ ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ๋ ˆ์ง€์Šคํ„ฐ์— ์ €์žฅํ•œ๋‹ค. ์ด ์—ฐ์‚ฐ์ด ๋๋‚˜๋ฉด ๋ ˆ์ง€์Šคํ„ฐ์— ์ €์žฅ๋œ ๋„ค ์ž๋ฆฟ์ˆ˜๋Š” ์™ผํŽธ๋ถ€ํ„ฐ d4, d1, d2, d3์ด ๋œ๋‹ค.

์œ„์—์„œ ์–ธ๊ธ‰ํ•œ ๊ฒƒ์ฒ˜๋Ÿผ, L ๊ณผ R ๋ช…๋ น์–ด๋Š” ์‹ญ์ง„ ์ž๋ฆฟ์ˆ˜๋ฅผ ๊ฐ€์ •ํ•˜๊ณ  ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด์„œ n = 1234 ๋ผ๋ฉด ์—ฌ๊ธฐ์— L ์„ ์ ์šฉํ•˜๋ฉด 2341 ์ด ๋˜๊ณ  R ์„ ์ ์šฉํ•˜๋ฉด 4123 ์ด ๋œ๋‹ค. ์—ฌ๋Ÿฌ๋ถ„์ด ์ž‘์„ฑํ•  ํ”„๋กœ๊ทธ๋žจ์€ ์ฃผ์–ด์ง„ ์„œ๋กœ ๋‹ค๋ฅธ ๋‘ ์ •์ˆ˜ A์™€ B(A โ‰  B)์— ๋Œ€ํ•˜์—ฌ A๋ฅผ B๋กœ ๋ฐ”๊พธ๋Š” ์ตœ์†Œํ•œ์˜ ๋ช…๋ น์–ด๋ฅผ ์ƒ์„ฑํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์ด๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด์„œ A = 1234, B = 3412 ๋ผ๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋‘ ๊ฐœ์˜ ๋ช…๋ น์–ด๋ฅผ ์ ์šฉํ•˜๋ฉด A๋ฅผ B๋กœ ๋ณ€ํ™˜ํ•  ์ˆ˜ ์žˆ๋‹ค. 1234 โ†’L 2341 โ†’L 3412 1234 โ†’R 4123 โ†’R 3412 ๋”ฐ๋ผ์„œ ์—ฌ๋Ÿฌ๋ถ„์˜ ํ”„๋กœ๊ทธ๋žจ์€ ์ด ๊ฒฝ์šฐ์— LL ์ด๋‚˜ RR ์„ ์ถœ๋ ฅํ•ด์•ผ ํ•œ๋‹ค. n์˜ ์ž๋ฆฟ์ˆ˜๋กœ 0 ์ด ํฌํ•จ๋œ ๊ฒฝ์šฐ์— ์ฃผ์˜ํ•ด์•ผ ํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด์„œ 1000 ์— L ์„ ์ ์šฉํ•˜๋ฉด 0001 ์ด ๋˜๋ฏ€๋กœ ๊ฒฐ๊ณผ๋Š” 1 ์ด ๋œ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ R ์„ ์ ์šฉํ•˜๋ฉด 0100 ์ด ๋˜๋ฏ€๋กœ ๊ฒฐ๊ณผ๋Š” 100 ์ด ๋œ๋‹ค.


์ž…๋ ฅ

ํ”„๋กœ๊ทธ๋žจ ์ž…๋ ฅ์€ T ๊ฐœ์˜ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋กœ ๊ตฌ์„ฑ๋œ๋‹ค. ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค ๊ฐœ์ˆ˜ T ๋Š” ์ž…๋ ฅ์˜ ์ฒซ ์ค„์— ์ฃผ์–ด์ง„๋‹ค. ๊ฐ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋กœ๋Š” ๋‘ ๊ฐœ์˜ ์ •์ˆ˜ A์™€ B(A โ‰  B)๊ฐ€ ๊ณต๋ฐฑ์œผ๋กœ ๋ถ„๋ฆฌ๋˜์–ด ์ฐจ๋ก€๋กœ ์ฃผ์–ด์ง€๋Š”๋ฐ A๋Š” ๋ ˆ์ง€์Šคํ„ฐ์˜ ์ดˆ๊ธฐ ๊ฐ’์„ ๋‚˜ํƒ€๋‚ด๊ณ  B๋Š” ์ตœ์ข… ๊ฐ’์„ ๋‚˜ํƒ€๋‚ธ๋‹ค. A ์™€ B๋Š” ๋ชจ๋‘ 0 ์ด์ƒ 10,000 ๋ฏธ๋งŒ์ด๋‹ค.


์ถœ๋ ฅ

A์—์„œ B๋กœ ๋ณ€ํ™˜ํ•˜๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•œ ์ตœ์†Œํ•œ์˜ ๋ช…๋ น์–ด ๋‚˜์—ด์„ ์ถœ๋ ฅํ•œ๋‹ค. ๊ฐ€๋Šฅํ•œ ๋ช…๋ น์–ด ๋‚˜์—ด์ด ์—ฌ๋Ÿฌ๊ฐ€์ง€๋ฉด, ์•„๋ฌด๊ฑฐ๋‚˜ ์ถœ๋ ฅํ•œ๋‹ค.


์˜ˆ์ œ

์ž…๋ ฅ

3
1234 3412
1000 1
1 16


์ถœ๋ ฅ

LL
L
DDDD


My Sol

import sys
input = sys.stdin.readline
from collections import deque

def check(num2, txt, char):
    global visit, Q
    if not visit[num2]:
        visit[num2] = txt+char
        Q.append((txt+char, num2))


T = int(input())
for _ in range(T):
    b, t = map(int, input().split())
    visit = ['']*10001
    Q = deque()
    Q.append(('', b))
    while not visit[t]:
        txt, num = Q.popleft()

        # D์ธ ๊ฒฝ์šฐ
        num2 = (num*2)%10000
        check(num2, txt, 'D')

        # S์ธ ๊ฒฝ์šฐ
        num2 = (num-1)%10000
        check(num2, txt, 'S')

        # L์ธ ๊ฒฝ์šฐ
        num2 = (num%1000)*10 + (num//1000)
        check(num2, txt, 'L')

        # R์ธ ๊ฒฝ์šฐ
        num2 = (num//10) + (num%10)*1000
        check(num2, txt, 'R')

    print(visit[t])

BFS๋ฅผ ์ด์šฉํ•˜๋ฉด ์‰ฝ๊ฒŒ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ์˜€๋‹ค. 10000๊ฐœ์— ๋‹ฌํ•˜๋Š” ๊ฒฝ์šฐ์— ๋Œ€ํ•ด ์ธ๋ฑ์Šค๋กœ ๊ฐ ์ƒํ™ฉ์— ๊ฐ€์žฅ ๋นจ๋ฆฌ ๋„๋‹ฌํ•  ์ˆ˜ ์žˆ๋Š” ๋ช…๋ น ํ…์ŠคํŠธ๋ฅผ ์ฑ„์›Œ๋‚˜๊ฐ„๋‹ค. ๋งŒ์•ฝ ์ด๋ฏธ ํ•ด๋‹น ์ธ๋ฑ์Šค์— ๊ฐ’์ด ์žˆ๋‹ค๋ฉด ๊ฐ€์žฅ ๋นจ๋ฆฌ ๋„๋‹ฌํ•  ์ˆ˜ ์žˆ๋Š” ๋ช…๋ น์œผ๋กœ ๋„๋‹ฌํ•œ ๊ฒƒ์ด๋ฏ€๋กœ Q์— ์ฑ„์›Œ์ฃผ์ง€ ์•Š์•„๋„ ๋œ๋‹ค.

๊ฐ ๋ช…๋ น ๊ฒฝ์šฐ์— ๋”ฐ๋ฅธ ๊ฐ’์˜ ๋ณ€ํ™”๋ฅผ ๊ฐ ์ƒํ™ฉ์—์„œ ๊ณ„์‚ฐํ•ด ํ•จ์ˆ˜์— ๋„ฃ์–ด์ค€๋‹ค. ํ•จ์ˆ˜ ๋‚ด์—์„œ๋Š” ํ•ด๋‹น ๊ฐ’์„ ์ธ๋ฑ์Šค๋กœ ํ•˜๋Š” ๋ฐฐ์—ด์˜ ๊ฐ’์ด ์ฐจ์žˆ๋Š”์ง€ ์•„๋‹Œ์ง€ ์—ฌ๋ถ€๋ฅผ ํŒ๋‹จํ•˜์—ฌ ์ฒ˜์Œ ๋„๋‹ฌํ•˜๋Š” ๊ฐ’์ด๋ผ๋ฉด ๋ฐฐ์—ด๊ณผ deque์— ์ถ”๊ฐ€ํ•œ๋‹ค. ๋ช…๋ น๋งˆ๋‹ค ๋ฐ˜๋ณตํ•˜๋ฏ€๋กœ ์ปดํฌ๋„ŒํŠธํ™”ํ•˜์˜€๋‹ค.


๊ฒฐ๊ณผ

๋งž์•˜์Šต๋‹ˆ๋‹ค!!

๋Œ“๊ธ€๋‚จ๊ธฐ๊ธฐ