ํฐ์คํ ๋ฆฌ ๋ทฐ
์จ๋ฐ๊ผญ์ง ์๋ฆฌ์ฆ
๋ฌธ์
๋ฌธ์ ํ์ด
์๋น์ด์ ์์น์ ๋์์ ์์น๊ฐ ์ฃผ์ด์ง ๋ ๊ฐ์ฅ ๋น ๋ฅธ ์๊ฐ์ ๋์์ ์ฐพ๋ ๊ฒ์ ๋ช ์ด ํ์ธ์ง ๊ตฌํ๋ ๋ฌธ์ ์ด๋ค. ๋์์ ์ฐพ๊ธฐ ์ํด ์ด๋ ํ ์ ์๋ ๋ฐฉ๋ฒ์ 1์ด๊ฐ ์ง๋ ๋๋ง๋ค ํ์ฌ ์์น -1, ํ์ฌ ์์น + 1, ํ์ฌ ์์น * 2๋ก ๋๋๋ค. ์ด์ ๊ฐ์ ๊ฒฝ์ฐ์ ์์ ๋ฐ๋ผ ์์ ์ ๋ ฅ 1์ ์ฐพ๊ธฐ ์ํ ๊ณผ์ ์ ํธ๋ฆฌ๋ก ๋ํ๋ด๋ฉด ์์ ๊ทธ๋ฆผ๊ณผ ๊ฐ๋ค.
๊ทธ๋ฆผ์์๋ ์ ์ ์๋ฏ์ด ์ด ๋ฌธ์ ๋ฅผ DFS๋ก ์ฐพ๊ฒ ๋๋ฉด, ๋ฌดํ ๋ฃจํ์ ๋น ์ง ์ ๋ ์์ผ๋ฉฐ ๋ต์ ์ฐพ๋๋ฐ ํจ์จ์ ์ด์ง ์๋ค. ๋ฐ๋ผ์ BFS๋ฅผ ํตํด ๊ฒฝ์ฐ์ ์๋ฅผ ํ์ ์ถ๊ฐํ๋ ๋ฐฉ์์ ์ฌ์ฉํ์ฌ ๋ต์ ์ฐพ์ผ๋ฉด ๋๋ค. ๋ฐฉ๋ฌธ ์ฌ๋ถ๋ฅผ ํ์ธํ๋ visited์ ๊ฑธ๋ฆฐ ์๊ฐ์ ์ค์ฒฉํ์ฌ ๋์์ ์ฐพ๋๋ฐ ๊ฑธ๋ฆฐ ์๊ฐ์ ๊ตฌํ ์ ์๋ค.
์ฝ๋
from sys import stdin
from collections import deque
def bfs(start):
q = deque([start])
while q:
cur_loc = q.popleft()
if cur_loc == k:
return visited[cur_loc]
for next_loc in (cur_loc - 1, cur_loc + 1, cur_loc * 2):
if 0 <= next_loc < MAX_LOC and not visited[next_loc]:
visited[next_loc] = visited[cur_loc] + 1
q.append(next_loc)
if __name__ == '__main__':
MAX_LOC = 100001
n, k = map(int, stdin.readline().split())
visited = [0] * MAX_LOC
print(bfs(n))
์์ ๊ทธ๋ฆผ ์ฒ๋ผ ๊ฒฝ์ฐ์ ์์ ๋ฐ๋ผ ๊ฐ์ง๋ฅผ ๋ปฃ๊ธฐ ์ํด, ๋ฐ๋ณต๋ฌธ์ ํตํด ํ์ฌ ์ง์ - 1, +1, *2์ ๋ฐฉ๋ฌธ ๊ฐ๋ฅ ์ฌ๋ถ์ ๋ฐ๋ผ, ํ์ ์ถ๊ฐํ๋ค. ํ์ฌ ์์น๊ฐ ๋์์ ์์น (k)์ ๊ฐ์์ง๋ค๋ฉด ๋ ์ด์ ์งํํ์ง ์๊ณ ์ข ๋ฃํ๋ค.
'๐จโ๐ป ์ฝ๋ฉํ ์คํธ > ๋ฐฑ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋ฐฑ์ค: 13549 ์จ๋ฐ๊ผญ์ง 3 (0) | 2020.07.24 |
---|---|
๋ฐฑ์ค: 12851 ์จ๋ฐ๊ผญ์ง 2 (0) | 2020.07.24 |
๋ฐฑ์ค: 16929 Two Dots (0) | 2020.07.23 |
๋ฐฑ์ค: 1707 ์ด๋ถ ๊ทธ๋ํ (0) | 2020.07.22 |
๋ฐฑ์ค: 7526 ๋์ดํธ์ ์ด๋ (0) | 2020.07.22 |