[프로그래머스]

yewon Lee·2023년 9월 28일
0


😎코딩테스트 연습>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()를 사용
profile
시작

0개의 댓글