[๋ฐฑ์ค€] 9019 DSLR (python ํŒŒ์ด์ฌ)

2022. 6. 26. 18:48ยท๐Ÿงฉ Problem Solving/[๋ฐฑ์ค€]

https://www.acmicpc.net/problem/9019

 

9019๋ฒˆ: DSLR

๋„ค ๊ฐœ์˜ ๋ช…๋ น์–ด D, S, L, R ์„ ์ด์šฉํ•˜๋Š” ๊ฐ„๋‹จํ•œ ๊ณ„์‚ฐ๊ธฐ๊ฐ€ ์žˆ๋‹ค. ์ด ๊ณ„์‚ฐ๊ธฐ์—๋Š” ๋ ˆ์ง€์Šคํ„ฐ๊ฐ€ ํ•˜๋‚˜ ์žˆ๋Š”๋ฐ, ์ด ๋ ˆ์ง€์Šคํ„ฐ์—๋Š” 0 ์ด์ƒ 10,000 ๋ฏธ๋งŒ์˜ ์‹ญ์ง„์ˆ˜๋ฅผ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ฐ ๋ช…๋ น์–ด๋Š” ์ด ๋ ˆ์ง€์Šคํ„ฐ์—

www.acmicpc.net


์•„์ด๋””์–ด

1. bfs

  • ์ตœ์†Œํ•œ์˜ ๋ช…๋ น ์–ด์„ ์ถœ๋ ฅ ํ•˜๋ผ ํ–ˆ์œผ๋ฏ€๋กœ bfs๊ฐ€ ์•„๋‹ˆ๋ฉด ๋ชป ํ’€ ๊ฑฐ ๊ฐ™๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๋‹ค.
  • ์‹œ๊ฐ„์ œํ•œ๋„ 6์ดˆ๋กœ ๋„‰๋„‰ํ•˜๊ฒŒ ์žˆ์–ด์„œ ์ถฉ๋ถ„ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๋‹ค.

2. ์‹œ๊ฐ„ ์ดˆ๊ณผ

  • ์š”์ฆ˜ ๊ณ„์† ์‹œ๊ฐ„ ์ดˆ๊ณผ๊ฐ€ ๋œฌ๋‹ค. 6์ดˆ๋ผ์„œ ๋„‰๋„‰ํ•  ์ค„ ์•Œ์•˜๋Š”๋ฐ.
  • ์‹œ๊ฐ„ ์ดˆ๊ณผ๊ฐ€ ๋œฌ์ด์œ ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.
  • D, S, L, R ๊ฐ๊ฐ์˜ ๋ช…๋ น์–ด๋ฅผ ๊ฐ„์†Œํ•˜๊ฒŒ ๊ตฌํ˜„ํ•ด์•ผ ํ–ˆ๋Š”๋ฐ, if๋ฌธ์ด๋‚˜ ๋ฆฌ์ŠคํŠธ๋ฅผ ์‚ฌ์šฉํ•ด ์‹œ๊ฐ„์ œํ•œ์ด ๊ฑธ๋ฆฐ ๊ฑฐ ๊ฐ™๋‹ค.
  • ์ˆ˜ํ•™์ ์œผ๋กœ ๋จผ์ € ์ ‘๊ทผํ–ˆ์œผ๋ฉด ์ข‹์•˜์„ ๊ฑฐ ๊ฐ™๋‹ค.

3. DSLR ๋ช…๋ น์–ด

  • D์™€ S๋Š” ๊ธˆ๋ฐฉ ๋ฐฉ๋ฒ•์„ ๋– ์˜ค๋ฅผ ์ˆ˜ ์žˆ๋‹ค. S๋Š” ์Œ์ˆ˜ ๋‚˜๋ˆ—์…ˆ์— ๋Œ€ํ•ด ์•Œ๊ณ  ์žˆ๋‹ค๋ฉด ์ข‹๋‹ค.
  • L๊ณผ R์€ ์ด ๋ฌธ์ œ์—์„œ๋Š” ์ž๋ฆฟ์ˆ˜๊ฐ€ ์ •ํ•ด์ ธ ์žˆ์œผ๋ฏ€๋กœ ์‚ฌ์น™์—ฐ์‚ฐ์œผ๋กœ๋„ ๊ตฌํ˜„ ๊ฐ€๋Šฅํ•˜๋‹ค.
  • ์ง์ ‘ ์ข…์ด์— ์ ์–ด๊ฐ€๋ฉฐ ์ˆ˜์‹์„ ๋งŒ๋“œ๋Š” ๊ฒŒ ๋„์›€์ด ๋๋‹ค.

์ฝ”๋“œ ์„ค๋ช…

while deq:
    num, command = deq.popleft()

    if num == B:
        print(command)
        break

    d = num * 2 % 10000
    if not visited[d]:
        visited[d] = True
        deq.append([d, command + 'D'])

    s = (num - 1) % 10000
    if not visited[s]:
        visited[s] = True
        deq.append([s, command + 'S'])

    l = num // 1000 + (num % 1000)*10
    if not visited[l]:
        visited[l] = True
        deq.append([l, command + 'L'])

    r = num // 10 + (num % 10) * 1000
    if not visited[r]:
        visited[r] = True
        deq.append([r, command + 'R'])

bfs์— ๋Œ€ํ•œ ๋‚ด์šฉ์€ ๊ฐ„๋‹จํ•˜๋‹ค.

์ˆซ์ž๋ฅผ ๋ณ€ํ˜•ํ•˜๋ฉด์„œ ์ด ์ˆซ์ž๋ฅผ ๋ฐฉ๋ฌธํ•œ ์ ์ด ์žˆ๋Š”์ง€ ์ฒดํฌํ•ด๊ฐ€๋ฉฐ ๋ช…๋ น์–ด๋ฅผ ์ถ”๊ฐ€ํ•˜๋ฉด ๋œ๋‹ค.

 

์ค‘์š”ํ•œ ๊ฑด ๋ช…๋ น์–ด ๋ถ€๋ถ„์ด๋‹ค.

D๋‚˜ S ๊ฐ™์€ ๋ถ€๋ถ„์€ ๋ฌธ์ œ ์กฐ๊ฑด์— ๋งž๊ฒŒ ์ ์–ด์ฃผ๋ฉด ๋œ๋‹ค.

 

L์ด๋‚˜ R ๊ฐ™์€ ๊ฒฝ์šฐ๋Š” ์‹ ๊ฒฝ์„ ์จ์ค˜์•ผ ํ•œ๋‹ค. 

์˜ˆ๋ฅผ ๋“ค์–ด 123์ด ์žˆ๋‹ค๊ณ  ํ•˜๋ฉด. ์™ผ์ชฝ์œผ๋กœ ํšŒ์ „ํ•˜๋ฉด 231์ด ์•„๋‹ˆ๊ณ  1230์ด ๋˜๊ณ ,

์˜ค๋ฅธ์ชฝ์œผ๋กœ ํšŒ์ „ํ•˜๋ฉด 3012๊ฐ€ ๋œ๋‹ค. 

์งง์€ ์ˆ˜์‹์ด๋ฏ€๋กœ ๊ณต์ฑ…์ด๋‚˜ ๋ฉ”๋ชจ์žฅ์— ๊ฐ„๋‹จํ•˜๊ฒŒ ์จ๋ณด๋Š” ๊ฒƒ์ด ์ข‹๋‹ค. ๋ฐ”๋กœ ์ƒ๊ฐ๋‚˜๋ฉด ๋” ์ข‹๊ณ 

 

๋ณธ์ธ์€ deque๋ฅผ ์‚ฌ์šฉํ•ด rotateํ•จ์ˆ˜๋ฅผ ์ผ๋Š”๋ฐ ์ด๊ฒƒ์ด ์‹œ๊ฐ„ ์ดˆ๊ณผ์˜ ์›์ธ์ธ ๊ฒƒ ๊ฐ™๋‹ค.


์ „์ฒด ์ฝ”๋“œ

import sys
from collections import deque
T = int(input())

for _ in range(T):
    A, B = map(int,sys.stdin.readline().rstrip().split())

    visited = [False for i in range(10001)]
    deq = deque()
    deq.append([A,''])
    visited[A] = True

    while deq:
        num, command = deq.popleft()

        if num == B:
            print(command)
            break

        d = num * 2 % 10000
        if not visited[d]:
            visited[d] = True
            deq.append([d, command + 'D'])

        s = (num - 1) % 10000
        if not visited[s]:
            visited[s] = True
            deq.append([s, command + 'S'])

        l = num // 1000 + (num % 1000)*10
        if not visited[l]:
            visited[l] = True
            deq.append([l, command + 'L'])

        r = num // 10 + (num % 10) * 1000
        if not visited[r]:
            visited[r] = True
            deq.append([r, command + 'R'])

pypy3๋กœ ์ œ์ถœ ์—ฌ๋‹ด์œผ๋กœ python3๋กœ ๋งž์ถ˜ ์‚ฌ๋žŒ์€ 10๋ช…๋„ ์•ˆ๋œ๋‹ค.

'๐Ÿงฉ Problem Solving > [๋ฐฑ์ค€]' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[๋ฐฑ์ค€] 9375 ํŒจ์…˜์™• ์‹ ํ•ด๋นˆ (python ํŒŒ์ด์ฌ)  (0) 2022.06.29
[๋ฐฑ์ค€] 1074 Z (python ํŒŒ์ด์ฌ)  (0) 2022.06.26
[๋ฐฑ์ค€] 14500 ํ…ŒํŠธ๋กœ๋ฏธ๋…ธ (python ํŒŒ์ด์ฌ)  (0) 2022.06.23
[๋ฐฑ์ค€] 18111 ๋งˆ์ธํฌ๋ž˜ํ”„ํŠธ (python ํŒŒ์ด์ฌ)  (4) 2022.06.23
[๋ฐฑ์ค€] 1107 ๋ฆฌ๋ชจ์ฝ˜ (python ํŒŒ์ด์ฌ)  (0) 2022.06.22
'๐Ÿงฉ Problem Solving/[๋ฐฑ์ค€]' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [๋ฐฑ์ค€] 9375 ํŒจ์…˜์™• ์‹ ํ•ด๋นˆ (python ํŒŒ์ด์ฌ)
  • [๋ฐฑ์ค€] 1074 Z (python ํŒŒ์ด์ฌ)
  • [๋ฐฑ์ค€] 14500 ํ…ŒํŠธ๋กœ๋ฏธ๋…ธ (python ํŒŒ์ด์ฌ)
  • [๋ฐฑ์ค€] 18111 ๋งˆ์ธํฌ๋ž˜ํ”„ํŠธ (python ํŒŒ์ด์ฌ)
์ œ๋ด‰์•„
์ œ๋ด‰์•„
  • ์ œ๋ด‰์•„
    Overthinking
    ์ œ๋ด‰์•„
    fake it till you make it.
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (104)
      • ๐Ÿงฉ Problem Solving (83)
        • [๋ฐฑ์ค€] (74)
        • [ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] (7)
        • [SW Expert Academy] (1)
        • [์•Œ๊ณ ๋ฆฌ์ฆ˜ for PS] (1)
      • ๐Ÿ“ฆ Data Structure (2)
      • ๐Ÿ“œ Language (14)
        • [python] (14)
      • ๐Ÿ–ค Git (1)
      • ๐ŸŒ† ์ผ์ƒ (2)
        • ๐Ÿ’ฌ ๋ฒฝ๋ณด๊ณ  ๋งํ•˜๊ธฐ (2)
      • ๐Ÿ—„๏ธ ๊ธฐํƒ€ (2)
      • ๐Ÿ”ต css (0)
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

    • ํ™ˆ
    • ํƒœ๊ทธ
    • ๋ฐฉ๋ช…๋ก
  • ๋งํฌ

  • ๊ณต์ง€์‚ฌํ•ญ

  • ์ธ๊ธฐ ๊ธ€

  • ํƒœ๊ทธ

    boj
    DP
    ์žฌ๊ท€
    SWEA
    ์œ„์ƒ์ •๋ ฌ
    ํˆฌํฌ์ธํ„ฐ
    ๋ˆ„์ ํ•ฉ
    ์ •์ฒ˜๊ธฐ
    ์Šคํƒ
    Python
    ๋ฐฑ์ค€
    Bruteforce
    ํ”Œ๋กœ์ด๋“œ ์™€์ƒฌ
    ํ”Œ๋กœ์ด๋“œ์›Œ์…œ
    ๋ฐฑํŠธ๋ž˜ํ‚น
    ํŒŒ์ด์ฌ
    ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค
    ๊ทธ๋ฆฌ๋””
    ๋ถ„ํ•  ์ •๋ณต
    ๋‹ค์ต์ŠคํŠธ๋ผ
    ๊ตฌํ˜„
    ํŒฐ๋ฆฐ๋“œ๋กฌ
    ๋ธŒ๋ฃจํŠธํฌ์Šค
    imos
    BFS
    ๋ฐ๋ธŒ์ฝ”์Šค
    slicing
    ๋ถ€๋ถ„ํ•ฉ
    ๋ƒ…์ƒ‰
    DFS
  • ์ตœ๊ทผ ๋Œ“๊ธ€

  • ์ตœ๊ทผ ๊ธ€

  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.3
์ œ๋ด‰์•„
[๋ฐฑ์ค€] 9019 DSLR (python ํŒŒ์ด์ฌ)
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”