코딩테스트/Python
[Programmers] Level 2. 두 큐 합 같게 만들기
swwho
2022. 12. 26. 15:54
728x90
반응형
🔗 Problem Link
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
❔Thinking
- 같은 크기의 두 큐가 주어지면, 두 큐의 합이 같도록 만드는 최소 방법을 구하여 반환한다.
💻Solution
from collections import deque
def solution(queue1, queue2):
q1_sum, q2_sum = sum(queue1), sum(queue2)
queue1, queue2 = deque(queue1), deque(queue2)
cnt = 0
while (queue1 and queue2) and cnt != len(queue1)*3:
if q1_sum == q2_sum:
return cnt
if q1_sum < q2_sum:
num = queue2.popleft()
queue1.append(num)
q1_sum += num
q2_sum -= num
else:
num = queue1.popleft()
queue2.append(num)
q1_sum -= num
q2_sum += num
cnt += 1
return -1
🗝️keypoint
- while의 종료 조건의 len(queue1) * 3은, queue1가 원래대로 돌아오는 횟수를 말한다.
- sum()함수를 매번 활용하면 시간초과가 발생한다.