ํฐ์คํ ๋ฆฌ ๋ทฐ
728x90
๋ฐ์ํ
์จ๋ฐ๊ผญ์ง ์๋ฆฌ์ฆ
๋ฌธ์
๋ฌธ์ ํ์ด
1697 ์จ๋ฐ๊ผญ์ง ๋ฌธ์ ์์ ์ฐพ์ ์ ์๋ ๊ฒฝ๋ก๋ฅผ ์ถ๋ ฅํ๋ ๋ฌธ์ ์ด๋ค. ๋ช ์ด ๋ง์ ์ฐพ์ ์ ์๋์ง ๊ธฐ๋กํ๋ ๊ฒ์ฒ๋ผ 2์ฐจ์ ๋ฐฐ์ด์ ํตํด, ๋ฐฉ๋ฌธ ๊ฒฝ๋ก๋ฅผ ๊ธฐ๋กํด๋๋ฉด ์ฝ๊ฒ ํด๊ฒฐ ํ ์ ์๋ค. ์์์์๋ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด ํ๋์ ๋ฌธ์ ์ ๋ํด 2๊ฐ์ง ๊ฒฝ๋ก๋ฅผ ์ถ๋ ฅํ์์ง๋ง ํ๋์ ๊ฒฝ๋ก๋ง ์ ์์ ์ผ๋ก ์ถ๋ ฅํ์ฌ๋ ๋ต์ผ๋ก ์ฒ๋ฆฌ ๋๋ ๊ฒ ๊ฐ๋ค.
์ฝ๋
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][TIME]
for next_loc in (cur_loc - 1, cur_loc + 1, cur_loc * 2):
if 0 <= next_loc < MAX_LOC and not visited[next_loc][TIME]:
visited[next_loc][TIME] = visited[cur_loc][TIME] + 1
visited[next_loc][PATH] = cur_loc
q.append(next_loc)
if __name__ == '__main__':
MAX_LOC, TIME, PATH = 100001, 0, 1
n, k = map(int, stdin.readline().split())
visited = [[0, 0] for _ in range(MAX_LOC)]
print(bfs(n))
answer = [k]
while k != n:
k = visited[k][PATH]
answer.append(k)
print(*answer[::-1])
728x90
๋ฐ์ํ
'๐จโ๐ป ์ฝ๋ฉํ ์คํธ > ๋ฐฑ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋ฐฑ์ค: 1991 ํธ๋ฆฌ ์ํ (0) | 2020.07.27 |
---|---|
๋ฐฑ์ค: 14226 ์ด๋ชจํฐ์ฝ (0) | 2020.07.25 |
๋ฐฑ์ค: 13549 ์จ๋ฐ๊ผญ์ง 3 (0) | 2020.07.24 |
๋ฐฑ์ค: 12851 ์จ๋ฐ๊ผญ์ง 2 (0) | 2020.07.24 |
๋ฐฑ์ค: 1697 ์จ๋ฐ๊ผญ์ง (0) | 2020.07.23 |
๋๊ธ
๊ธ ๋ณด๊ดํจ
์ต๊ทผ์ ์ฌ๋ผ์จ ๊ธ
์ต๊ทผ์ ๋ฌ๋ฆฐ ๋๊ธ