๐ ๋ฌธ์
๋ค ๊ฐ์ ๋ช ๋ น์ด D, S, L, R ์ ์ด์ฉํ๋ ๊ฐ๋จํ ๊ณ์ฐ๊ธฐ๊ฐ ์๋ค. ์ด ๊ณ์ฐ๊ธฐ์๋ ๋ ์ง์คํฐ๊ฐ ํ๋ ์๋๋ฐ, ์ด ๋ ์ง์คํฐ์๋ 0 ์ด์ 10,000 ๋ฏธ๋ง์ ์ญ์ง์๋ฅผ ์ ์ฅํ ์ ์๋ค. ๊ฐ ๋ช ๋ น์ด๋ ์ด ๋ ์ง์คํฐ์ ์ ์ฅ๋ n์ ๋ค์๊ณผ ๊ฐ์ด ๋ณํํ๋ค. n์ ๋ค ์๋ฆฟ์๋ฅผ d1, d2, d3, d4๋ผ๊ณ ํ์ (์ฆ n = ((d1 × 10 + d2) × 10 + d3) × 10 + d4๋ผ๊ณ ํ์)
1. D: D ๋ n์ ๋ ๋ฐฐ๋ก ๋ฐ๊พผ๋ค. ๊ฒฐ๊ณผ ๊ฐ์ด 9999 ๋ณด๋ค ํฐ ๊ฒฝ์ฐ์๋ 10000 ์ผ๋ก ๋๋ ๋๋จธ์ง๋ฅผ ์ทจํ๋ค. ๊ทธ ๊ฒฐ๊ณผ ๊ฐ(2n mod 10000)์ ๋ ์ง์คํฐ์ ์ ์ฅํ๋ค.
2. S: S ๋ n์์ 1 ์ ๋บ ๊ฒฐ๊ณผ n-1์ ๋ ์ง์คํฐ์ ์ ์ฅํ๋ค. n์ด 0 ์ด๋ผ๋ฉด 9999 ๊ฐ ๋์ ๋ ์ง์คํฐ์ ์ ์ฅ๋๋ค.
3. L: L ์ n์ ๊ฐ ์๋ฆฟ์๋ฅผ ์ผํธ์ผ๋ก ํ์ ์์ผ ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ๋ ์ง์คํฐ์ ์ ์ฅํ๋ค. ์ด ์ฐ์ฐ์ด ๋๋๋ฉด ๋ ์ง์คํฐ์ ์ ์ฅ๋ ๋ค ์๋ฆฟ์๋ ์ผํธ๋ถํฐ d2, d3, d4, d1์ด ๋๋ค.
4. 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๋ก ๋ณํํ๊ธฐ ์ํด ํ์ํ ์ต์ํ์ ๋ช ๋ น์ด ๋์ด์ ์ถ๋ ฅํ๋ค. ๊ฐ๋ฅํ ๋ช ๋ น์ด ๋์ด์ด ์ฌ๋ฌ๊ฐ์ง๋ฉด, ์๋ฌด๊ฑฐ๋ ์ถ๋ ฅํ๋ค.
๐ ๋ฌธ์ ํ์ด
ํด๋น ๋ฌธ์ ๋ BFS๋ฅผ ํตํด ์์ ๋ณํ๊ณผ์ ์ ํ์ํด ๋๊ฐ๋ค.
ํ์ ๋ณํ๋ ์ซ์ ๋ฟ๋ง ์๋๋ผ ๊ทธ ์ซ์๊ฐ ๋๊ธฐ ์ํ ๋ช ๋ น์ด๋ ๊ฐ์ด ์ ์ฅํด์ฃผ์ด ๊ฐฑ์ ํ์๋ค.
D๋ฅผ ์ํํ๊ธฐ ์ํด์๋ ๋จ์ํ (2*n)%10000 ์ ์ํํ๋ฉด ๋๋ค. S๋ n์ด 0์ด ์๋๋๋ n-1 ์ ํด์ฃผ์๊ณ 0์ผ๋๋ n๊ฐ์ 9999๋ฅผ ๋ฃ์๋ค.
L๊ณผ R ๊ฐ์ ๊ฒฝ์ฐ์๋ n์ด 4์๋ฆฌ ์ซ์์ผ ๊ฒฝ์ฐ ๋ฌธ์์ด ์ธ๋ฑ์ฑ์ ํด์ฃผ์ด ๋ช ๋ น์ด๋ฅผ ์ํํ๊ณ , 4์๋ฆฌ ์ซ์๊ฐ ์๋ ๊ฒฝ์ฐ 0์ ํฌํจ์์ผ ์ธ๋ฑ์ฑ์ ํด์ฃผ์๋ค.
๐ป ์ฝ๋
import sys
from collections import deque
input=sys.stdin.readline
# BFS ์ ์
def bfs(a,b):
queue=deque()
queue.append([a,'']) # ํ์ฌ ์ซ์์ ๋ช
๋ น์ด
visited=[False]*10000 # ๋ฐฉ๋ฌธ๋ฐฐ์ด
while queue:
tob,pro=queue.popleft()
if tob==b: # ํ์ฌ ์ซ์๊ฐ b์ ๊ฐ๋ค๋ฉด ๋ช
๋ น์ด๋ฅผ ๋ฆฌํด
return pro
# S ์ํ
if tob == 0:
S=9999
else:
S=tob-1
# L๊ณผ R ์ํ
if len(str(tob)) == 4:
L = int(str(tob)[1:]+str(tob)[0])
R = int(str(tob)[-1]+str(tob)[:-1])
else:
L = tob*10
R = int(str(tob)[-1]+str(0)*(4-len(str(tob)))+str(tob)[:-1])
# ์ด๋ ๊ฐ๋ฅํ ์ซ์ ๋ฐฐ์ด
move=[(2*tob)%10000, S, L, R]
# ๋ช
๋ น์ด
way=['D','S','L','R']
for i in range(4):
if not visited[move[i]] and move[i] < 10000: # ๋ฐฉ๋ฌธํ์ง ์์๊ณ 10000 ์ดํ๋ผ๋ฉด ๋ฐฉ๋ฌธ
visited[move[i]] = True # ๋ฐฉ๋ฌธ์ฒ๋ฆฌ
queue.append([move[i], pro+way[i]]) # ํ์ ์ซ์์ ๋ช
๋ น์ด ์ฝ์
for _ in range(int(input())):
a,b=map(int,input().split())
print(bfs(a,b))
๐ญ ์ํ์ฐฉ์ค
์์ด์ ํ๋ ธ์ต๋๋ค๋ฅผ ๋ฐ๋ณตํ์๋...ใ ใ
ํ๋ ธ๋ ์ด์ ๋ L๊ณผ R์ด 4์๋ฆฌ ์ซ์๊ฐ ์๋๋ ์ฒ๋ฆฌ๊ณผ์ ์ ๋ฌธ์ ๊ฐ ์์๋ค.
๊ทธ๋์ ๋ฐฑ์ค์๋ ๊ธ์ ๋จ๊ฒผ๋ค. ํน์ ๋๊ฐ์ ์ค์๋ฅผ ํ๊ณ ์๋ ๋ถ์ด ์์์๋ ์์ผ๋
https://www.acmicpc.net/board/view/96558
์ฒซ๋ฒ์งธ ๋ง์์ต๋๋ค๋ ๋ฐฉ๋ฌธ์ฒ๋ฆฌ๋ฅผ dict ์๋ฃ๊ตฌ์กฐ๋ฅผ ์ฌ์ฉํด์ ํ์๊ณ , ๋๋ฒ์งธ ๋ง์์ต๋๋ค์์๋ ๋ฐฉ๋ฌธ์ฒ๋ฆฌ๋ฅผ list ์๋ฃ๊ตฌ์กฐ๋ฅผ ์ฌ์ฉํด์ ํ์๊ณ ๋ ์ด๋์ ํ์ 10000์ด ์๋ 100000๋ก 0 ํ๋๋ฅผ ๋ ๋ถํ์ด์ ๊ทธ๋ถ๋ถ๋ ์์ ํด์ฃผ์์๋ค. 3๋ฒ์งธ๋ 0ํ๋ ๋ ๋ถํ๊ฑฐ ์์ ํ๊ณ dict ์๋ฃ๊ตฌ์กฐ๋ฅผ ์ฌ์ฉํ์๋ค.
๐ ๋ฌธ์ ๋งํฌ DSLR
'Problem Solving > ๋ฐฑ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] 1041๋ฒ: ์ฃผ์ฌ์ - ํ์ด์ฌ (0) | 2022.08.20 |
---|---|
[๋ฐฑ์ค] 1865๋ฒ: ์ํ - ํ์ด์ฌ (2) | 2022.08.06 |
[๋ฐฑ์ค] 1753๋ฒ: ์ต๋จ๊ฒฝ๋ก - ํ์ด์ฌ (0) | 2022.07.30 |
[๋ฐฑ์ค] 2470๋ฒ: ๋ ์ฉ์ก (0) | 2022.07.28 |
[๋ฐฑ์ค] 1043๋ฒ: ๊ฑฐ์ง๋ง - ํ์ด์ฌ (0) | 2022.07.26 |