프로그래머스/LV2

[프로그래머스 Lv2,python] - 두 큐 합 같게 만들기

chyam_eun 2025. 2. 8. 14:23

https://school.programmers.co.kr/learn/courses/30/lessons/118667?language=python3

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

from collections import deque

def solution(queue1, queue2):
    queue1=deque(queue1) # 각각을 큐로 만들기
    queue2=deque(queue2)
    sum1=sum(queue1) # 각각의 합을 변수에 저장
    sum2=sum(queue2)
    sum_all=sum1+sum2 # 전체 합
    cnt = 0 # 횟수
    if max(queue1+queue2)>(sum_all)//2 or sum_all%2!=0: # 합이 홀수거나 max값이 합//2보다 크면 불가능
        return -1
    target=sum_all//2 # 전체 합의 절반이 되어야함.
    max_oper=len(queue1)*4 # 시간초과하지 않기위한 조건
    while(cnt<=max_oper): 
        if sum1==target: # 전체 합의 절반이라면 cnt를 리턴하기 
            return cnt
        if sum1>target: # 1이 더 크면 
            pop=queue1.popleft() # 큐1번에서 뽑아와서 큐2에 추가하기
            sum1-=pop
            sum2+=pop
            queue2.append(pop)
        else: # 2이 더 크면
            pop=queue2.popleft() # 큐2번에서 뽑아와서 큐1에 추가하기
            sum1+=pop
            sum2-=pop
            queue1.append(pop)
        cnt+=1
    return -1 # while이 끝났는데도 없는거면 -1로 리턴하기