PS/프로그래머스

두 큐 합 같게 만들기 - lv2

ForteQook 2022. 10. 23. 19:13

문제

코딩테스트 연습 - 두 큐 합 같게 만들기 | 프로그래머스 스쿨 (programmers.co.kr)

 

프로그래머스

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

programmers.co.kr

풀이

큐에서 popleft 해서 다른 큐에 append 하는 과정은 마치 두 큐를 하나의 리스트로 이어놓은 다음, 두개의 포인터를 계속해서 옮겨가는 과정과 같다. 따라서 start, end를 queue1의 첫번째 인덱스와 마지막 인덱스로 초기화한 뒤, 만약 두 큐 원소들의 합의 절반 값인 target 보다 start부터 end까지의 구간 합 now 가 크다면 start에 1을 더하면서 원래 start에 있던 원소를 빼고, 작다면 end에 1을 더한 뒤 해당 인덱스 원소를 더해주는 방식으로 구현했다. 옮긴 횟수가 답이되겠다.

def solution(queue1, queue2):
    answer = 0
    q = queue1 + queue2
    length = len(q)
    now = sum(queue1)
    target = sum(q) // 2
    start,end = 0,len(queue1)-1
    flag = False
    while start <= end:
        if now > target:
            if start >= length:
                break
            now -= q[start]
            start += 1
            answer += 1
        elif now < target:
            if end + 1 >= length:
                break
            end += 1
            now += q[end]
            answer += 1
        else:
            flag = True
            break
    
    return answer if flag else -1

'PS > 프로그래머스' 카테고리의 다른 글

합승 택시 요금 (lv3)  (0) 2022.09.04
표 편집 (lv3)  (0) 2022.09.04
[1차] 프렌즈4블록 (lv2)  (0) 2022.09.04
[카카오 인턴] 보석 쇼핑 (lv3)  (0) 2022.09.04
[1차] 셔틀버스 (lv3)  (0) 2022.09.02