ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [๋ฐฑ์ค€] 12761 ๋Œ๋‹ค๋ฆฌ with Python
    PS 2022. 3. 23. 16:33
    728x90
    ๋ฐ˜์‘ํ˜•

    ๐Ÿ“Œ BOJ 12761 ๋Œ๋‹ค๋ฆฌ

    ๐Ÿ’ก ์กฐ๊ฑด

    1. ๋Œ์˜ ๋ฒˆํ˜ธ๋Š” 0 ๋ถ€ํ„ฐ 100,000 ๊นŒ์ง€ ์กด์žฌํ•˜๊ณ  ๋™๊ทœ๋Š” N๋ฒˆ ๋Œ ์œ„์—, ์ฃผ๋ฏธ๋Š” M๋ฒˆ ๋Œ ์œ„์— ์œ„์น˜ํ•˜๊ณ  ์žˆ๋‹ค.

    2. ๋™๊ทœ๋Š” ์ฃผ๋ฏธ๊ฐ€ ๋„ˆ๋ฌด ๋ณด๊ณ ์‹ถ๊ธฐ ๋•Œ๋ฌธ์— ์ตœ๋Œ€ํ•œ ๋นจ๋ฆฌ ์ฃผ๋ฏธ์—๊ฒŒ ๊ฐ€๊ธฐ ์œ„ํ•ด A, B ๋งŒํผ์˜ ํž˜์„ ๊ฐ€์ง„ ์Šค์นด์ด ์ฝฉ์ฝฉ์„ ๊ฐ€์ ธ์™”๋‹ค.

    3. ํ˜„ ์œ„์น˜์—์„œ +1์นธ, -1์นธ์„ ์ด๋™ํ•  ์ˆ˜ ์žˆ๊ณ , ์Šค์นด์ด ์ฝฉ์ฝฉ์„ ์ด์šฉํ•ด ํ˜„ ์œ„์น˜์—์„œ A๋‚˜ B๋งŒํผ ์ขŒ์šฐ๋กœ ์ ํ”„ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ,
      ์ˆœ๊ฐ„์ ์œผ๋กœ ํž˜์„ ๋ชจ์•„ ํ˜„ ์œ„์น˜์˜ A๋ฐฐ ๋‚˜ B๋ฐฐ์˜ ์œ„์น˜๋กœ ์ด๋™์„ ํ•  ์ˆ˜ ์žˆ๋‹ค.

    4. ์ด๋™ ๊ณผ์ •์—์„œ 100,000๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ 0๋ณด๋‹ค ์ž‘์€ ๋ฒˆํ˜ธ์˜ ๋Œ์€ ์กด์žฌํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ๊ฐˆ ์ˆ˜ ์—†๊ณ ,
      ๊ฐ™์€ ๋ฐฉ๋ฒ•์„ ๊ณ„์† ์‚ฌ์šฉํ•ด๋„ ๋˜๋ฉฐ ํ•ญ์ƒ ๋„๋‹ฌํ•  ์ˆ˜ ์žˆ๋Š” ์ผ€์ด์Šค๋งŒ ์ฃผ์–ด์ง„๋‹ค.

    5. ์ฒซ ์ค„์— ์Šค์นด์ด ์ฝฉ์ฝฉ์˜ ํž˜ A์™€ B, ๊ทธ๋ฆฌ๊ณ  ๋™๊ทœ์˜ ํ˜„์žฌ์œ„์น˜ N, ์ฃผ๋ฏธ์˜ ํ˜„์žฌ ์œ„์น˜ M์ด ์ฃผ์–ด์ง„๋‹ค.
      (๋‹จ, 2 <= A, B <= 30 ์ด๊ณ  0 <= N, M <= 100,000)

    6. ๋‹ค์ด๋‚˜๋ฏนํ”„๋กœ๊ทธ๋ž˜๋ฐ ์œ ํ˜•์˜ ๋ฌธ์ œ

    ๐Ÿ–ฅ ์†Œ์Šค ์ฝ”๋“œ

    from sys import stdin
    from collections import deque
    
    a, b, n, m = map(int, stdin.readline().split())
    dp = [-1 for _ in range(100001)]
    
    
    def solve():
        q = deque()
        q.append(n)
        dp[n] = 0
        while q:
            x = q.popleft()
            for i in (x * a, x * b, x + a, x - a, x + b, x - b, x + 1, x - 1):
                if 0 < i < 100001:
                    if dp[i] == -1:
                        dp[i] = dp[x] + 1
                        q.append(i)
    
    
    solve()
    print(dp[m])

    ๐Ÿ”– ์˜ˆ์ œ ๋ฐ ์‹คํ–‰๊ฒฐ๊ณผ

    ์˜ˆ์ œ

    3 7 2 98500

    ์‹คํ–‰๊ฒฐ๊ณผ

    10

    โŒจ๏ธ ๋ฌธ์ œ ํ’€์ด

    1. -1๋กœ ์ฑ„์›Œ์ง„ dp ๋ฆฌ์ŠคํŠธ๋ฅผ ์ƒ์„ฑํ•œ๋‹ค. ์ด๋ฏธ ๋ฐฉ๋ฌธํ–ˆ๋˜ ๋Œ๋‹ค๋ฆฌ๋Š” ๊ฑด๋„ˆ์ง€ ์•Š์„ ๊ฒƒ์ด๋‹ค.
      ์ฆ‰, -1์ด ์•„๋‹Œ ๋Œ๋‹ค๋ฆฌ๋งŒ ๋ฐŸ๊ณ  ๊ฐˆ ๊ฒƒ์ด๋‹ค. ํ˜„์žฌ ์œ„์น˜ n์€ 0์œผ๋กœ ๊ฐฑ์‹ ํ•ด์ค€๋‹ค.
      ๋˜ํ•œ ํ์— n์„ ๋„ฃ์–ด ์ด๋™์„ ์‹œ์ž‘ํ•œ๋‹ค.

    2. ์กฐ๊ฑด (3)๋ฒˆ์— ์จ๋†“์•˜๋˜ ์ด๋™์ด ๊ฐ€๋Šฅํ•œ ๊ฒฝ์šฐ์˜ ๊ณ„์‚ฐ๊ฐ’์„ ์ˆœํšŒํ•˜๋ฉด์„œ 0 ๊ณผ 100000 ๊ฐ’ ์‚ฌ์ด์— ์žˆ๋Š”์ง€ ํ™•์ธํ•œ๋‹ค.

    3. (2)๋ฒˆ์˜ ์กฐ๊ฑด์— ํ•ด๋‹นํ•œ๋‹ค๋ฉด, dp[i] ์˜ ๊ฐ’์„ ํ˜„์žฌ ์œ„์น˜์— ํ•ด๋‹นํ•˜๋Š” ์ด๋™ ๊ฐ’์—์„œ + 1ํ•œ ๊ฐ’์„ ์ €์žฅํ•ด์ค€๋‹ค.

    4. ์ด๋™ํ•  ๋Œ๋‹ค๋ฆฌ์˜ ๋ฒˆํ˜ธ๋ฅผ ํ์— ๋„ฃ์–ด์ค€๋‹ค.

    5. ํ๊ฐ€ ๋น„์–ด์„œ ๋๋‚˜๊ฒŒ ๋˜๋ฉด, N์—์„œ ์ถœ๋ฐœํ•˜์—ฌ M๊นŒ์ง€ ๊ฐ€๋Š” ์ตœ์†Œ ์ด๋™ํšŸ์ˆ˜ dp[M]์„ ์ถœ๋ ฅํ•œ๋‹ค.

    ๐Ÿ’พ ๋Š๋‚€์ 

    1. ์ˆจ๋ฐ”๊ผญ์งˆ๊ณผ ๋น„์Šทํ•œ ๋Š๋‚Œ. ์ˆ˜ํ‰์œผ๋กœ ์ขŒํ‘œ์ด๋™์„ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๊ณ  ํ’€์ดํ•˜๋‹ˆ ์‰ฝ๊ฒŒ ํ’€๋ ธ๋‹ค.
    ๋ฐ˜์‘ํ˜•

    ๋Œ“๊ธ€

Designed by Tistory.