본문 바로가기
  • 초부득3 - 어제보다 나은 내일을 위해
  • 꿈이 현실이 되는 날까지
sw사관학교 정글 2기/03 DFS, BFS, 위상정렬

[BFS] 백준 숨바꼭질 1697번 with Python3

by 금의야행 2021. 8. 25.

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


def bfs():
    while que:
        now = que.popleft()

        if now == sister:
            print(record[now])
            exit()

        if 0 <= now+1 < N:
            if visited[now+1] == 0:
                visited[now+1] = 1
                que.append(int(now+1))
                record[now+1] = record[now] + 1

        if 0 <= now-1 < N:
            if visited[now-1] == 0:
                visited[now-1] = 1
                que.append(int(now-1))
                record[now-1] = record[now] + 1

        if 0 <= now*2 < N:
            if visited[now*2] == 0:
                visited[now*2] = 1
                que.append(int(now*2))
                record[now*2] = record[now] + 1


N = 100001
visited = [0]*N
record = [0]*N


subin, sister = map(int, input().split())
que = deque([subin])
visited[subin] = 1

bfs()

해설

단순한 구현 문제.

 

댓글