ํ‹ฐ์Šคํ† ๋ฆฌ ๋ทฐ

728x90
๋ฐ˜์‘ํ˜•

์ˆจ๋ฐ”๊ผญ์งˆ ์‹œ๋ฆฌ์ฆˆ

 

๋ฌธ์ œ

 

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

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

www.acmicpc.net

 

๋ฌธ์ œ ํ’€์ด

 ์ˆ˜๋นˆ์ด์˜ ์œ„์น˜์™€ ๋™์ƒ์˜ ์œ„์น˜๊ฐ€ ์ฃผ์–ด์งˆ ๋•Œ ๊ฐ€์žฅ ๋น ๋ฅธ ์‹œ๊ฐ„์— ๋™์ƒ์„ ์ฐพ๋Š” ๊ฒƒ์€ ๋ช‡ ์ดˆ ํ›„์ธ์ง€ ๊ตฌํ•˜๋Š” ๋ฌธ์ œ์ด๋‹ค. ๋™์ƒ์„ ์ฐพ๊ธฐ ์œ„ํ•ด ์ด๋™ ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์€ 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)์™€ ๊ฐ™์•„์ง„๋‹ค๋ฉด ๋” ์ด์ƒ ์ง„ํ–‰ํ•˜์ง€ ์•Š๊ณ  ์ข…๋ฃŒํ•œ๋‹ค.

728x90
๋ฐ˜์‘ํ˜•
๋Œ“๊ธ€
๊ธ€ ๋ณด๊ด€ํ•จ
์ตœ๊ทผ์— ์˜ฌ๋ผ์˜จ ๊ธ€
์ตœ๊ทผ์— ๋‹ฌ๋ฆฐ ๋Œ“๊ธ€