IT STUDY LOG
[Python] 백준 12851번: 숨바꼭질2 본문
# 문제 내용
# 알고리즘 분류
- 그래프 이론
- 그래프 탐색
- 너비 우선 탐색
# 풀이
from collections import deque
import sys
input = sys.stdin.readline
MAX_SIZE = 100001 # 가능한 n,k의 최대값 - 1
# n : 수빈 위치, k : 동생 위치
n, k = map(int, input().split())
q = deque()
q.append(n)
# k까지 가장 빨리 찾는 방법을 담을 배열
visited = [-1] * MAX_SIZE
visited[n] = 0 # 현위치는 방문했으므로
# 가장 빠른 시간으로 찾는 방법의 수
min_cnt = 0;
# 걷는 경우 + 1, -1
# 순간 이동을 하는 경우 2 * 현위치
while q:
now = q.popleft()
# 동생 위치에 도달했다면
if now == k :
min_cnt += 1
# 방향 이동 경우의 수
# +1 걷기 / -1 걷기 / now * 2 순간이동
for next in [now + 1, now - 1, now * 2]:
# 위치가 이동할 수 있는 범위 안에 있다면
if 0 <= next < MAX_SIZE:
# 방문하지 않았거나 / 방문했어도 현재 시간보다 더 많거나 같다면 최소 시간을 교체
if visited[next] == -1 or visited[next] >= visited[now] + 1:
visited[next] = visited[now] + 1
# 방문 위치를 큐에 추가
q.append(next)
print(visited[k])
print(min_cnt)
# References
https://chaemi720.tistory.com/213
'computer science > coding test' 카테고리의 다른 글
[MySQL] 프로그래머스: 12세 이하인 여자 환자 목록 출력하기 (0) | 2023.04.26 |
---|---|
[JAVA] 프로그래머스: 더 맵게 (0) | 2023.04.26 |
[MySQL] 프로그래머스: 과일로 만든 아이스크림 고르기 (0) | 2023.04.25 |
[JAVA] 프로그래머스: 같은 숫자는 싫어 (0) | 2023.04.25 |
[MySQL] 프로그래머스: 3월에 태어난 여성 회원 목록 출력하기 (0) | 2023.04.24 |
Comments