개발/알고리즘
[카카오] 두 큐 합 같게 만들기
개발자_티모
2024. 8. 23. 15:30
반응형
문제 이해하기
간단하게 생각하면 두 저울의 합을 같게 맞추는 문제로 한 저울에서 다른 저울로 값을 옮겨가다 보면 같게 맞춰진다.
문제 해결 방법 설명하기
1. 큐1에 있는 원소들의 합과 큐2에 있는 원소들의 합을 비교
2. 더 큰 값의 큐에서 더 작은 큐쪽으로 원소를 이동하면 됨
3. 문제 예시의 3번 조건을 보면 항상 같을 똑같이 만들 수 있는 것이 보장되지 않기 때문에 최대 경우의 수가 넘어가면 -1을 반환해야 함
코드
from collections import deque
def solution(q1, q2):
t1_sum = sum(q1)
t2_sum = sum(q2)
q1 = deque(q1)
q2 = deque(q2)
answer = 0
max_try = len(q1) * 4 # 최대 시도 횟수 설정
try_count = 0
while try_count <= max_try:
if t1_sum == t2_sum:
return answer
if t1_sum < t2_sum:
temp = q2.popleft()
q1.append(temp)
t2_sum -= temp
t1_sum += temp
else:
temp = q1.popleft()
q2.append(temp)
t2_sum += temp
t1_sum -= temp
try_count += 1
answer += 1
return -1 # max_try를 초과한 경우
if __name__ == "__main__":
q1 = [1, 2, 1, 2]
q2 = [1, 10, 1, 2]
print(solution(q1=q1, q2=q2))
반응형