프로그래머스/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로 리턴하기