문제
https://school.programmers.co.kr/learn/courses/30/lessons/118667?language=python3
설계
- 시간복잡도가 중요한 문제이다.
- deque를 사용하지 않으면 시간초과에 걸린다.
- sum을 사용하여 풀었지만 시간복잡도에 걸려 sum값에 +, -로 합계를 조정해 주었다.
- 큐의 길이 *3 보다 많이 계산할 경우 -1을 반환한다.
from collections import deque
def solution(queue1, queue2):
queue1, queue2 = deque(queue1), deque(queue2)
answer = 0
count = 0
maxV = len(queue1) * 3
sumV1, sumV2 = sum(queue1), sum(queue2) # 평균값
while 1:
if sumV1 == sumV2:
return answer
elif sumV1 > sumV2:
num = queue1.popleft()
sumV1 -= num
sumV2 += num
queue2.append(num)
answer += 1
elif sumV1 < sumV2:
num = queue2.popleft()
sumV2 -= num
sumV1 += num
queue1.append(num)
answer += 1
count += 1
if count == maxV:
return -1
'PS (Problem Solving) > Programmers' 카테고리의 다른 글
[프로그래머스] k진수에서 소수 개수 구하기 (0) | 2022.09.27 |
---|---|
[프로그래머스] 주차 요금 계산 (0) | 2022.09.16 |
[프로그래머스] 게임 맵 최단거리 (0) | 2022.08.24 |
[프로그래머스] 성격 유형 검사하기 (0) | 2022.08.23 |
[프로그래머스] [1차] 비밀지도 (0) | 2022.08.18 |