백준1697(파이썬) - 숨바꼭질
resilient
·2021. 4. 27. 02:10
728x90
반응형
1697번: 숨바꼭질
수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일
www.acmicpc.net
DFS가 안되는 문제인거같다. 한참 첫번째 코드처럼 삽질을 좀하다가 q로 쉽게 풀렸던 문제이다.
완전 탐색 방법에는 다음과 같은 방법들이 있다.
- Brute Force : for문과 if문을 이용해 처음부터 끝까지 탐색하는 방법
- 비트마스크
- 순열 : 순열의 시간 복잡도는 O(N)
- 백트래킹
- BFS
- DFS
#######################################dfs안되는문제
import sys
input = sys.stdin.readline
""" ans =[]
time = 0
def function(start,k):
global time
if start == k:
ans.append(time)
else:
function(2*start,k)
function(start+1,k)
function(start-1,k)
time +=1
print(min(ans)) """
from collections import deque
Max = 100001
cnt = [0]*Max
n,k = map(int,input().split())
def function():#bfs사용
q = deque()
q.append(n) #현재위치 n을 q에 삽입
while q:
now = q.popleft() #현재위치
if now == k: #현재위치가 동생위치랑 같으면 현재위치까지오는데 걸린 카운트 출력
print(cnt[now])
return
for _next in (now+1,now-1,now*2): #순서가 바뀌면 답이 틀리다.
if 0<= _next <Max and not cnt[_next]:
cnt[_next] = cnt[now]+1
q.append(_next)
function()
반응형
'자료구조 & 알고리즘 > 백준(Baekjoon)' 카테고리의 다른 글
백준11279(파이썬) - 최대 힙 (0) | 2021.04.30 |
---|---|
백준2579(파이썬) - 계단오르기 (0) | 2021.04.29 |
백준 1561(파이썬) - 놀이공원 (0) | 2021.04.10 |
백준 1939(파이썬) - 중량제한 (0) | 2021.04.05 |
백준 2146(파이썬) - 다리만들기 (0) | 2021.04.05 |