๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
  • What would life be If we had no courage to attemp anything?
Problem Solving/BAEKJOON

[baekjoon]python #1697 ์ˆจ๋ฐ”๊ผญ์งˆ

by DevIseo 2023. 1. 25.

[baekjoon]python #1697 ์ˆจ๋ฐ”๊ผญ์งˆ

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

 

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

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

www.acmicpc.net

import sys
from collections import deque

input = sys.stdin.readline

subin,sis = map(int,input().split())

queue = deque()
queue.append((subin,0))
#๋ฉ”๋ชจ๋ฆฌ ์ดˆ๊ณผ ๋ฐฉ์ง€
visit = [0] * 100001

while queue:
    now_subin,sec = queue.popleft()
    visit[now_subin] = 1

    if now_subin == sis:
        print(sec)
        break
    direct = [-1,1,2]

    for i in range(3):
        if direct[i] == 2:
            direct_subin = now_subin * direct[i]
        else:
            direct_subin = now_subin + direct[i]

        if 0<=direct_subin<=100000:
            if visit[direct_subin] == 0:
                queue.append((direct_subin,sec+1))

์ฒ˜์Œ์—๋Š” ๋ฒ”์œ„๋ฅผ ์ง€์ •ํ•ด์ฃผ์ง€ ์•Š์•„์„œ ๋ฉ”๋ชจ๋ฆฌ ์ดˆ๊ณผ๊ฐ€ ๋‚ฌ๋‹ค.

๊ทธ๋ž˜์„œ ๋ฒ”์œ„๋ฅผ ์ง€์ •ํ–ˆ์ง€๋งŒ ์—ญ์‹œ๋‚˜ ๋ฉ”๋ชจ๋ฆฌ ์ดˆ๊ณผ๊ฐ€ ๋‚ฌ๊ณ , visit๋ฐฐ์—ด์„ ํ†ตํ•ด ์ค‘๋ณต๋˜๋Š” ๊ฐ’๋“ค์„ ์ œ๊ฑฐํ•ด ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ด€๋ฆฌํ•˜์˜€๋‹ค.

๋Œ“๊ธ€