🔗 Problem Link
❔Thinking
- 같은 크기의 두 큐가 주어지면, 두 큐의 합이 같도록 만드는 최소 방법을 구하여 반환한다.
💻Solution
from collections import deque
def solution(queue1, queue2):
q1_sum, q2_sum = sum(queue1), sum(queue2)
queue1, queue2 = deque(queue1), deque(queue2)
cnt = 0
while (queue1 and queue2) and cnt != len(queue1)*3:
if q1_sum == q2_sum:
return cnt
if q1_sum < q2_sum:
num = queue2.popleft()
queue1.append(num)
q1_sum += num
q2_sum -= num
else:
num = queue1.popleft()
queue2.append(num)
q1_sum -= num
q2_sum += num
cnt += 1
return -1
🗝️keypoint
- while의 종료 조건의 len(queue1) * 3은, queue1가 원래대로 돌아오는 횟수를 말한다.
- sum()함수를 매번 활용하면 시간초과가 발생한다.