개발바닥

BOJ_12761 [ 돌다리 ] [ 파이썬 ] 본문

[ Algorithm ]/[ PYTHON ]

BOJ_12761 [ 돌다리 ] [ 파이썬 ]

라이언 2020. 5. 29. 15:36
반응형

문제

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

 

12761번: 돌다리

동규와 주미는 일직선 상의 돌 다리 위에있다. 돌의 번호는 0 부터 100,000 까지 존재하고 동규는 \(N\)번 돌 위에, 주미는 \(M\)번 돌 위에 위치하고 있다. 동규는 주미가 너무 보고싶기 때문에 최대��

www.acmicpc.net

문제 해결 방법

bfs로 문제 해결 방법을 접근했습니다.

총 이동 가능한 경우 8가지를 현재 위치에서 다음 위치를 계산해서

범위를 벗어나지 않았고 처음 방문했다면 큐에 넣으면 된다.

 

소스 코드 보기

https://github.com/jokerKwu/BOJ_Algorithm/blob/master/python/BOJ_12761.py

 

jokerKwu/BOJ_Algorithm

Contribute to jokerKwu/BOJ_Algorithm development by creating an account on GitHub.

github.com

from collections import deque
import sys
input = sys.stdin.readline
A, B, N, M = map(int,input().split())
m_x = [1, -1, A, B, -A, -B, A, B]
visit = [0 for _ in range(100001)]
cnt = [0 for _ in range(100001)]
q = deque()
visit[N] = 1
q.append(N)
def bfs():
    while q:
        x = q.popleft()
        for i in range(8):
            if i < 6:
                nx = x + m_x[i]
                if 0<=nx<=100000 and visit[nx] == 0:
                    visit[nx] = 1
                    q.append(nx)
                    cnt[nx] = cnt[x] + 1
            else:
                nx = x * m_x[i]
                if 0<=nx<=100000 and visit[nx] == 0:
                    visit[nx] = 1
                    q.append(nx)
                    cnt[nx] = cnt[x] + 1
bfs()
print(cnt[M])
반응형
Comments