https://school.programmers.co.kr/learn/courses/30/lessons/118667
input :
output :
조건 :
다른 큐
에 집어넣는(insert) 작업조건이 너무 많다면 빠뜨리는 부분이 많다. 편하게 생각할 수 있는것으로 먼저 구현하기.
위의 마지막 문장인 합이 큰 곳에서 pop을 하면 되는 이유 떄문에 고민을 했는데
해설을 작성해 주신 분께서 설명을해두셨다.
pop을 하는 이유
위의 연산을 계속 수행하기만 할 뿐 끝나지 않을 수도 있다.
그런 경우에 위의 조건이 필요하다.
from collections import deque
def solution(queue1, queue2):
q1, q2 = deque(queue1), deque(queue2)
length = len(q1) + len(q2)
q1_sum, q2_sum = sum(q1), sum(q2)
answer = 0
total = q1_sum + q2_sum
if total % 2 == 1:
return -1
if max(max(q1), max(q2)) > total // 2:
return -1
while q1_sum != (total // 2):
if answer > length * 2:
return -1
answer += 1
if q1_sum > q2_sum:
popped_item = q1.popleft()
q2.append(popped_item)
q1_sum -= popped_item
q2_sum += popped_item
else:
popped_item = q2.popleft()
q1.append(popped_item)
q1_sum += popped_item
q2_sum -= popped_item
return answer