[프로그래머스] Python Level2 2022 KAKAO TECH INTERNSHIP - 두 큐 합 같게 만들기

swb·2024년 2월 9일

프로그래머스

목록 보기
22/23

문제 바로가기

접근 방법

  1. 합이 더 큰 queue에서 작은 queue로 이동한다.
  2. 시간초과에 유념하여야 한다.
  3. 합이 홀수인 경우를 생각해야 한다.

코드

from collections import deque

def solution(queue1, queue2):
    cnt = 0
    queue1 = deque(queue1)
    queue2 = deque(queue2)
    sum1 = sum(queue1)
    sum2 = sum(queue2)
    total = (sum(queue1) + sum(queue2)) // 2
    maxN = len(queue1) * 3

    if (sum1 + sum2) % 2 != 0:
        return -1

    while cnt != maxN:
        if sum1 > sum2:
            move = queue1.popleft()
            queue2.append(move)
            sum1 -= move
            sum2 += move
        elif sum1 < sum2:
            move = queue2.popleft()
            queue1.append(move)
            sum2 -= move
            sum1 += move
        else:
            break

        cnt += 1
        if sum1 == total and sum2 == total:
            break

    if cnt == maxN:
        return -1

    return cnt
profile
개발 시작

0개의 댓글