문제 링크
풀이 과정
전체 코드
from collections import deque
def solution(queue1, queue2):
'''
1. 각 큐의 합을 같게 만들어야 함 -> 두 큐에 속한 모든 원소의 합이 짝수여야 함.
-> 홀수인 경우, -1 반환
2. 한쪽 큐에 속한 원소의 최댓값이 목표 합보다 큰 경우, -1을 반환
3. 두 큐의 합이 같지 않은 경우에는, 반드시 어느 한 큐의 합이 다른 한 큐의 합보다 클 수 밖에 없다.
-> sum(queue1) > sum(queue2) 또는 sum(queue1) < sum(queue2)
-> 두 큐의 합을 같게 만드려면, 원소의 합이 더 큰 큐에서 원소를 추출해야 함
'''
answer = 0
sum_queue1, sum_queue2 = sum(queue1), sum(queue2)
if (sum_queue1 + sum_queue2) % 2 == 1: return -1
total_queue = queue1 + queue2
left, right = 0, len(queue1)
total_len = len(total_queue)
while (left < total_len) and (right < total_len):
if sum_queue1 < sum_queue2:
sum_queue1 += total_queue[right]
sum_queue2 -= total_queue[right]
right += 1
answer += 1
elif sum_queue1 > sum_queue2:
sum_queue1 -= total_queue[left]
sum_queue2 += total_queue[left]
left += 1
answer += 1
if sum_queue1 == sum_queue2: return answer
return -1
Python
복사