문제 바로가기
접근 방법
- 합이 더 큰 queue에서 작은 queue로 이동한다.
- 시간초과에 유념하여야 한다.
- 합이 홀수인 경우를 생각해야 한다.
코드
from collections import deque
def solution(queue1, queue2):
cnt = 0
queue1 = deque(queue1)
queue2 = deque(queue2)
sum1 = sum(queue1)
sum2 = sum(queue2)
total = (sum(queue1) + sum(queue2)) // 2
maxN = len(queue1) * 3
if (sum1 + sum2) % 2 != 0:
return -1
while cnt != maxN:
if sum1 > sum2:
move = queue1.popleft()
queue2.append(move)
sum1 -= move
sum2 += move
elif sum1 < sum2:
move = queue2.popleft()
queue1.append(move)
sum2 -= move
sum1 += move
else:
break
cnt += 1
if sum1 == total and sum2 == total:
break
if cnt == maxN:
return -1
return cnt