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()함수를 매번 활용하면 시간초과가 발생한다.
'코딩테스트 > Python' 카테고리의 다른 글
[Baekjoon] 1932. 정수 삼각형 (0) | 2023.01.03 |
---|---|
[Baekjoon] 18352. 특정 거리의 도시 찾기 (0) | 2022.12.29 |
[Leetcode] 77. Combinations (0) | 2022.12.02 |
[Leetcode] 46. Permutations (0) | 2022.12.02 |
[Leetcode] 17. Letter Combinations of a Phone Number (0) | 2022.12.02 |