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

2022. 8. 23. 16:08알고리즘/프로그래머스

반응형

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

두 큐 합 같게 만들기

2022 KAKAO TECH INTERNSHIP

문제

 

프로그래머스

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

programmers.co.kr

풀이

queue1, queue2 을 합치고 index 이동을 하면서 queue1의 합에서 해당 인덱스의 값을 더하고 빼서 목표값이 도달하게 했습니다.

가장먼저 총합이 홀수인 경우 2개로 나눌 수 없습니다.

두 큐를 합쳐서 [queue1, queue2] 의 상태로 만든 뒤 queue1의 합은 sum[start: end]로 나타낼 수 있습니다.

queue1의 합이 목표값보다 크다면 start 인덱스 값을 합에서 빼고

queue1의 합이 목표값보다 작다면 end 인덱스 값을 더하면서 queue1의 합을 조절합니다.

결국 목표 값에 도달했을 시 셈을 진행한 횟수가 답입니다.

그 외에는 start가 end를 넘어가는 경우로 성립할 수 없는 경우로 -1를 리턴합니다.

풀이코드


def solution(queue1, queue2):
    answer = -2
    sum_val = sum(queue1)+sum(queue2)
    if sum_val%2:
        return -1
    else:
        value = sum_val//2
    count = 0
    total_q = queue1 + queue2
    start = 0
    end = len(queue1)-1
    count = 0
    sum_queue = sum(queue1)
    while(sum_queue != value and start <= end):
        if sum_queue>value:
            sum_queue-=total_q[start]
            start+=1
            count+=1
        else:
            end+=1
            if end >=len(total_q):
                return -1
            sum_queue+=total_q[end]
            count+=1

    if start>end:
        return -1
    else:
        return count

반응형