Search
Duplicate

두 큐 합 같게 만들기

Level
2
문제 진행 상태
코드 완료
해설 작성 중
알고리즘 & 자료구조
리스트
정답률 (%)
53
태그
2022 KAKAO TECH INTERNSHIP

문제 링크

풀이 과정

전체 코드

from collections import deque def solution(queue1, queue2): ''' 1. 각 큐의 합을 같게 만들어야 함 -> 두 큐에 속한 모든 원소의 합이 짝수여야 함. -> 홀수인 경우, -1 반환 2. 한쪽 큐에 속한 원소의 최댓값이 목표 합보다 큰 경우, -1을 반환 3. 두 큐의 합이 같지 않은 경우에는, 반드시 어느 한 큐의 합이 다른 한 큐의 합보다 클 수 밖에 없다. -> sum(queue1) > sum(queue2) 또는 sum(queue1) < sum(queue2) -> 두 큐의 합을 같게 만드려면, 원소의 합이 더 큰 큐에서 원소를 추출해야 함 ''' answer = 0 sum_queue1, sum_queue2 = sum(queue1), sum(queue2) if (sum_queue1 + sum_queue2) % 2 == 1: return -1 total_queue = queue1 + queue2 left, right = 0, len(queue1) total_len = len(total_queue) while (left < total_len) and (right < total_len): if sum_queue1 < sum_queue2: sum_queue1 += total_queue[right] sum_queue2 -= total_queue[right] right += 1 answer += 1 elif sum_queue1 > sum_queue2: sum_queue1 -= total_queue[left] sum_queue2 += total_queue[left] left += 1 answer += 1 if sum_queue1 == sum_queue2: return answer return -1
Python
복사