Lv2 프로그래머스(Programmers)[Python][파이썬] 완전 범죄

"""
출처:프로그래머스,
https://school.programmers.co.kr/learn/courses/30/lessons/389480
"""

from collections import deque

def solution(info, n, m):
q=deque( [ [0,0] ] )

check=deque(info)
visited = set([(0,0)])

result=[]

while check:
# 감당해야할 리스크
da,db=check.popleft()

# 리스크를 감당했을 때의 위험도 담는 곳
new_q=deque([])

while q:
a,b=q.popleft()

if a>=n or b>=m:
continue

elif a<n and b>=m:
new_q.append((a+da,b))

elif a>=n and b<m:
new_q.append((a,b+db))

else:
new_q.append((a+da,b))
new_q.append((a,b+db))


if len(new_q)==0:
return -1

if len(check)==0:
result=deque(set(new_q))

else:
q=q+deque(set(new_q))
final=[]

for last_a,last_b in result:
if last_a < n and last_b <m:
final.append(last_a)

return -1 if len(final) == 0 else min(final)