728x90
반응형
Q1) 문제를 어떻게 이해했나요?
A1) 입력: 두 개의 같은 길이의 큐
출력: 각 큐의 합이 같아질 때까지의 최소 작업 횟수
조건: 큐는 FIFO 구조, 어떤 방식으로도 합을 같게 못 맞추면 -1 반환
Q2) 문제를 어떻게 풀 예정인가요?
A2) deque로 큐 구현 → sum(queue1)이 목표의 절반 크기보다 크면 queue1에서 꺼내서 queue2로 이동, 반대도 마찬가지
두 큐의 합이 같아 지는 순간 return
✅ 최적 코드
from collections import deque
def solution(queue1, queue2):
q1 = deque(queue1)
q2 = deque(queue2)
sum1 = sum(q1)
sum2 = sum(q2)
total = sum1 + sum2
if total % 2 != 0:
return -1 # 합이 홀수면 나눌 수 없음
target = total // 2
max_ops = len(queue1) * 4 # 최악의 경우: 양방향 이동 반복
count = 0
while count <= max_ops:
if sum1 == target:
return count
if sum1 > target:
# q1에서 꺼내서 q2에 넣음
num = q1.popleft()
sum1 -= num
q2.append(num)
sum2 += num
else:
# q2에서 꺼내서 q1에 넣음
num = q2.popleft()
sum2 -= num
q1.append(num)
sum1 += num
count += 1
return -1 # 제한 횟수 넘었으면 -1
728x90
반응형
'Algorithm' 카테고리의 다른 글
[카카오 코테 2018 | python] [1차] 프렌즈4블록 (0) | 2025.06.25 |
---|---|
[카카오 코테 2022 | python] 주차 요금 계산 (0) | 2025.06.24 |
[카카오 코테 2018 | python] 파일명 정렬 (0) | 2025.06.23 |
[카카오 코테 2019 | python] 인턴십크레인 인형뽑기 게임 ✅ (1) | 2025.06.23 |
[백준 15649 | python] N과 M (1) (백트레킹) (0) | 2025.06.21 |