- Reference
- 문제 자체를 잘못 이해하고, 너무 어렵게 생각했다.
- 그냥 각각 반대의 개념으로 생각하면 됐고, 정작 중요한 내용은 limit (시간 초과)에 대한 것이었다.
- 원래의 풀이는 문제 예시의 내용을 가지고 그대로 구현했으니 될 리가 없지..
condition = len(queue1) * 3
이 부분이 사실 아직도 이해가질 않는다.
- 2를 곱한다면 테스트 케이스 1에서 오류가 발생한다.
- 그래서 3을 곱해준 후 테스트를 통과할 수 있었다.
Solution
from collections import deque
def solution(queue1, queue2): # len(queue1) == len(queue2)
answer = 0
queue1, queue2 = deque(queue1), deque(queue2)
sum_q1, sum_q2 = sum(queue1), sum(queue2)
# 2가 안 돼서 3으로.. ㅠ
condition = len(queue1) * 3
while True:
if sum_q1 > sum_q2:
target = queue1.popleft()
queue2.append(target)
sum_q1 -= target
sum_q2 += target
answer += 1
elif sum_q1 < sum_q2:
target = queue2.popleft()
queue1.append(target)
sum_q1 += target
sum_q2 -= target
answer += 1
else:
break
if answer == condition:
answer = -1
break
return answer
# 테스트 결론: popleft()후 변수에 저장하면 원본 값에도 결국 popleft가 됨
# # @Test
# d = deque()
# d.append(1)
# d.append(2)
# d.append(3)
#
# print(d)
# L = d.popleft()
# print(d)
print(solution([3, 2, 7, 2], [4, 6, 5, 1]))
Leave a comment