😎코딩테스트 연습>2022 KAKAO TECH INTERNSHIP>두 큐 합 같게 만들기
from collections import deque
def solution(queue1, queue2):
queue1 = deque(queue1)
queue2 = deque(queue2)
cnt = 0
n = len(queue1)
s1 = sum(queue1)
s2 = sum(queue2)
while cnt <= n * 3:
if s1 > s2:
q = queue1.popleft()
queue2.append(q)
s1 -= q
s2 += q
elif s1 < s2:
q = queue2.popleft()
queue1.append(q)
s2 -= q
s1 += q
else:
break
cnt += 1
if cnt > n * 3:
cnt = -1
return cnt
큐의 합이 더 큰 쪽에서 pop을 하고 작은 쪽에 더해준다.
※주의
1. while문 안에서 sum으로 비교하니 시간초과 나서 변수로 따로 계산
2. q.pop(0)은 시간초과가 나서 deque로 변경하고 popleft()를 사용