๐Ÿงฉ Problem Solving/[๋ฐฑ์ค€]

[๋ฐฑ์ค€] 13549 ์ˆจ๋ฐ”๊ผญ์งˆ3 (python ํŒŒ์ด์ฌ)

์ œ๋ด‰์•„ 2022. 6. 13. 07:50

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

 

13549๋ฒˆ: ์ˆจ๋ฐ”๊ผญ์งˆ 3

์ˆ˜๋นˆ์ด๋Š” ๋™์ƒ๊ณผ ์ˆจ๋ฐ”๊ผญ์งˆ์„ ํ•˜๊ณ  ์žˆ๋‹ค. ์ˆ˜๋นˆ์ด๋Š” ํ˜„์žฌ ์  N(0 ≤ N ≤ 100,000)์— ์žˆ๊ณ , ๋™์ƒ์€ ์  K(0 ≤ K ≤ 100,000)์— ์žˆ๋‹ค. ์ˆ˜๋นˆ์ด๋Š” ๊ฑท๊ฑฐ๋‚˜ ์ˆœ๊ฐ„์ด๋™์„ ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋งŒ์•ฝ, ์ˆ˜๋นˆ์ด์˜ ์œ„์น˜๊ฐ€ X์ผ

www.acmicpc.net

 

ํ’€์ด ๊ณผ์ •

1697 - ์ˆจ๋ฐ”๊ผญ์งˆ ๋ฌธ์ œ์™€ ๋น„์Šทํ•˜๋‹ค. ์ฐจ์ด์ ์€ ์ˆจ๋ฐ”๊ผญ์งˆ 3 ๋ฌธ์ œ๋Š” ์ˆœ๊ฐ„์ด๋™ํ•  ๋•Œ 0์ดˆ ์†Œ์š”๋œ๋‹ค.

์ˆจ๋ฐ”๊ผญ์งˆ ๋ฌธ์ œ๋ฅผ ์˜ˆ์ „์— ํ’€์–ด์„œ ๋‚ ๋กœ ๋จน์œผ๋ ค ์ˆœ๊ฐ„์ด๋™ ๋ถ€๋ถ„๋งŒ ์ฝ”๋“œ๋ฅผ ์ˆ˜์ •ํ–ˆ๋Š”๋ฐ ํ‹€๋ ธ๋‹ค.

๋‹ค์‹œ ์งœ์•ผํ•˜๋‚˜ ์‹ถ์—ˆ๋Š”๋ฐ ์กฐ๊ธˆ๋งŒ ์ˆ˜์ •ํ•˜๋‹ˆ๊นŒ ํ•ด๊ฒฐ๋๋‹ค. bfs๋กœ ํ•ด๊ฒฐํ•จ.

 

from collections import deque
N , K = map(int,input().split())


deq = deque()
deq.append([N,0])
visited = [N]

while True:
    X = deq.popleft()
    posi = X[0]
    second = X[1]

    if posi == K:
        print(second)
        break

    if posi * 2 >= 0 and posi * 2 <= 100000 and posi * 2 not in visited:
        visited.append(posi * 2)
        deq.append([posi * 2,second])
    if posi - 1 >= 0 and posi - 1 <= 100000 and posi - 1 not in visited:
        visited.append(posi - 1)
        deq.append([posi - 1,second + 1])
    if posi + 1 >= 0 and posi + 1 <= 100000 and posi + 1 not in visited:
        visited.append(posi + 1)
        deq.append([posi + 1,second + 1])

ํ์—์„œ pop๋ฅผ ํ•œ ๊ฐ’์— ๋”ฐ๋ผ posi * 2, posi - 1, posi + 1์„ ๊ฐ ์กฐ๊ฑด์— ํ™•์ธํ•ด์„œ ํ์— ์ถ”๊ฐ€ํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

์ฃผ์˜ํ•  ์ ์€ ํ์— ์ถ”๊ฐ€ํ•  ๋•Œ ์ˆœ๊ฐ„ ์ด๋™ํ•˜๋Š” ๋ถ€๋ถ„์€ ๋จผ์ € ๋„ฃ์–ด์ค˜์•ผ ํ•œ๋‹ค.

 

์˜ˆ๋ฅผ ๋“ค์–ด N๊ณผ K ๊ฐ’์ด 3, 5 ์ธ๊ฒฝ์šฐ๋ฅผ ์ƒ๊ฐํ•ด๋ณด์ž

ํƒ์ƒ‰์„ X - 1, X + 1, X * 2 ์ˆœ์œผ๋กœ bfs ํ•˜๋ฉด 

3

2 4 6

1 (3) (4) / (3) 5 8 / (5) 7 12             //๊ด„ํ˜ธ๋Š” ์ด๋ฏธ ๋ฐฉ๋ฌธํ•ด์„œ ๋ฐฉ๋ฌธ ์•ˆ ํ•จ.

์œ„์™€ ๊ฐ™์ด ๋ฐฉ๋ฌธํ•˜๋ฉด ๊ฑธ๋ฆฐ ์‹œ๊ฐ„์€ +1 +1 ์ด๋ฏ€๋กœ 2๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค. 

 

๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์œผ๋กœ ํƒ์ƒ‰์„ X * 2, X - 1, X + 1 ์ˆœ์œผ๋กœ ํ•˜๋ฉด

3

6 2 4

12 5 7 / 8 (3) (5) / (4) 1 (3)

์œ„์™€ ๊ฐ™์ด ๋ฐฉ๋ฌธํ•˜๋ฉด ์ˆœ๊ฐ„์ด๋™์€ 0์ดˆ ์ด๋ฏ€๋กœ 1์„ ์ถœ๋ ฅํ•œ๋‹ค.

 

๋”ฐ๋ผ์„œ 0์ดˆ ๊ฑธ๋ฆฌ๋Š” ์ˆœ๊ฐ„์ด๋™์„ ๋จผ์ € ๋ฐฉ๋ฌธํ•ด์•ผ ๋œ๋‹ค.

๋‚˜๋จธ์ง€๋Š” ์ˆจ๋ฐ”๊ผญ์งˆ 1๊ณผ ๋˜‘๊ฐ™์Œ.

์ „์ฒด ์ฝ”๋“œ๋Š” ์œ„