코딩테스트/프로그래머스

[프로그래머스][queue] 두 큐 합 같게 만들기

박소민 2023. 10. 15. 00:56
두 큐 합 같게 만들기
 

프로그래머스

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

programmers.co.kr

 

  • 첫 풀이- fail
    • 시간초과
def solution(queue1, queue2):
    count=0
    n=(len(queue1)+len(queue2))*2
    
    while sum(queue1)!=sum(queue2):
        if count>n: 
            return -1
        count+=1
        
        sum1=sum(queue1)
        sum2=sum(queue2)
        
        if sum1<sum2:
            if not queue1: 
                return -1
            queue1.append(queue2.pop(0))
        else:
            if not queue2:
                return -1
            queue2.append(queue1.pop(0))
    return count

 

 

  • 재풀이
    • 계속해서 sum() 하는 과정에서 시간초과가 나는 것 같음
    • -> sum을 처음에만 사용하도록 수정
from collections import deque

def solution(queue1, queue2):
    q1, q2 = deque(queue1), deque(queue2)
    count=0
    n=(len(q1)+len(q2))*2
    
    
    sum1=sum(q1)    
    sum2=sum(q2)
    
    while sum1!=sum2:
        if count>n: 
            return -1
        count+=1
        
        if sum1<sum2:
            if not q2: 
                return -1
            x=q2.popleft()
            q1.append(x)
            sum1+=x
            sum2-=x
        else:
            if not q1:
                return -1
            x=q1.popleft()
            q2.append(x)
            sum2+=x
            sum1-=x
    return count