from collections import deque
def solution(queue1, queue2):
answer = 0
deque1 = deque(queue1)
deque2 = deque(queue2)
queue_len = len(deque1) * 2
sum1 = sum(deque1)
sum2 = sum(deque2)
queue_sum = (sum1 + sum2) / 2
# 홀수일 경우
if (sum1 + sum2) % 2 == 1:
return -1
# 두 큐에 담긴 원소의 합이 같아질 때까지 & 두 큐의 길이를 넘지 않을만큼만 반복
while sum1 != queue_sum and answer < 600000:
# 큐1에 담긴 원소의 합이 더 클 때
if sum1 > queue_sum:
tmp = deque1.popleft()
deque2.append(tmp)
sum1 -= tmp
sum2 += tmp
# 큐2에 담긴 원소의 합이 더 클 때
else:
tmp = deque2.popleft()
deque1.append(tmp)
sum1 += tmp
sum2 -= tmp
answer += 1
# 두 큐의 원소 합을 같게 만들 수 없는 경우
if answer == 600000:
answer = -1
return answer
🧩 list보다 deque를 사용하고,
sum을 계속 반복하여 계산하기보다 tmp를 사용하여 +, - 해주어
시간을 줄일 수 있다.