BFS๋ฅผ ํ์ฉํ ์ต์ ์๊ฐ์ ๊ตฌํ๋ ๋ฌธ์ .
์์ด๋์ด
ํ์ฌ ์์น(x)์์ ๊ฐ ์ ์๋ ๊ฑฐ๋ฆฌ๋ x - 1, x + 1, x * 2์ด๋ค.
๊ฐ ๊ฒฝ์ฐ๋ง๋ค if๋ฌธ์ ํตํด ์กฐ๊ฑด์ ํ์ธํด์ค๋ค.
์ด์ ์ ๋ฐฉ๋ฌธํ์ง ์์ ์์น๋ผ๋ฉด ๊ทธ ์์น๊น์ง ๊ฑธ๋ฆฌ๋ ์๊ฐ๋ค์ BFS๋ฐฉ์์ผ๋ก ์ํํ๋ฉฐ ์๊ฐ์ ์ ์ฅํด์ค๋ค.
์ ์ฒด ์ฝ๋
from collections import deque
N, K = map(int, input().split())
deq = deque()
deq.append(N)
visited = [-1] * 100001
visited[N] = 0
while deq:
x = deq.popleft()
if x == K:
print(visited[x])
break
for i in [x - 1, x + 1, x * 2]:
if 0 <= i <= 100000 and visited[i] == -1:
visited[i] = visited[x] + 1
deq.append(i)
์ฝ๋ ์ค๋ช
while deq:
x = deq.popleft()
if x == K:
print(visited[x])
break
for i in [x - 1, x + 1, x * 2]:
if 0 <= i <= 100000 and visited[i] == -1:
visited[i] = visited[x] + 1
deq.append(i)
์ฃผ์ด์ง ๋ฒ์(0 ~ 100000)์ ์๋์ง ํ์ธํ๊ณ ๋ฐฉ๋ฌธ ์ ๋ฌด๋ฅผ ๋ฐ์ง๋ค.
๋ฐฉ๋ฌธ ๊ฐ๋ฅํ๋ฉด ์ด์ ๊น์ง ์์๋ ์๊ฐ์์ + 1 ํด์ค๋ค.
๋ชฉํ ์์น์ ๋์ฐฉํ๋ฉด ์ต์์๊ฐ์ ์ถ๋ ฅํด์ค๋ค.
BFS์ด๋ฏ๋ก ๊ฐ ์์น๋ง๋ค ์๋์ ์ผ๋ก ์ต์์๊ฐ์ด ์ ์ฅ๋๋ค.
'๐งฉ Problem Solving > [๋ฐฑ์ค]' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] 2212 ์ผ์ (python ํ์ด์ฌ) (0) | 2024.03.27 |
---|---|
[๋ฐฑ์ค] 16918 ๋ด๋ฒ๋งจ (python ํ์ด์ฌ) (0) | 2024.03.23 |
[๋ฐฑ์ค] 15666 N๊ณผ M 12 (python ํ์ด์ฌ) (0) | 2024.03.21 |
[๋ฐฑ์ค] 14940 ์ฌ์ด ์ต๋จ๊ฑฐ๋ฆฌ (python ํ์ด์ฌ) (0) | 2024.03.20 |
[๋ฐฑ์ค] 1205 ๋ฑ์ ๊ตฌํ๊ธฐ (python ํ์ด์ฌ) (0) | 2024.03.19 |