취준/백준
[백준][Python][14226][BFS] 이모티콘
puff
2020. 4. 6. 11:50
문제 : https://www.acmicpc.net/problem/14226
BFS 문제다.
숨바꼭질 문제와 크게 다를바 없는 문제이다.
이 문제에서 내가 접근한 방식은 다음과 같다.
- 큐에 넣을 현재 상태는 [현재 이모티콘 갯수, 클립보드 이모티콘 갯수] 이다.
- 방문 확인용 visited 딕셔너리는 visited[상태] = 걸린 시간 이다.
이제 문제에 맞게 구현하면 되고, 범위 초과를 방지하기 위해 1<=s-1<1001 and 1<=c<2001 와 방문 확인을 하면 된다.
import sys
from collections import deque
n = int(input())
q = deque()
q.append((1,0))
visited = dict()
visited[(1,0)] = 0
while q:
s,c = q.popleft()
if s==n:
print(visited[(s,c)])
sys.exit()
if (s,s) not in visited.keys() and 1<=s<2001:
visited[(s,s)] = visited[(s,c)]+1
q.append((s,s))
if (s-1,c) not in visited.keys() and 1<=s-1<1001 and 1<=c<2001:
visited[(s-1,c)] = visited[(s,c)]+1
q.append((s-1,c))
if (s+c,c) not in visited.keys() and 1<=s+c<1001 and 1<=c<2001:
visited[(s+c,c)] = visited[(s,c)]+1
q.append((s+c,c))