본문 바로가기

⏳ 알고리즘/python 알고리즘 문제 풀이

프로그래머스 - LV2. 두 큐 합 같게 만들기

문제

https://school.programmers.co.kr/learn/courses/30/lessons/118667

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

코드

from collections import deque

def solution(queue1, queue2):
    if (sum(queue1)+sum(queue2))%2 != 0:
        return -1
    
    deque1 = deque(queue1)
    deque2 = deque(queue2)
    sum1, sum2 = sum(deque1), sum(deque2)
    count = 0
    
    while count <= len(queue1)*3 :
        if sum1 == sum2:
            return count
        elif sum1 > sum2:
            sum1 -= deque1[0]
            sum2 += deque1[0]
            d1 = deque1.popleft()
            deque2.append(d1)
        else:
            sum1 += deque2[0]
            sum2 -= deque2[0]
            d2 = deque2.popleft()
            deque1.append(d2)
        count += 1
        
    return -1