코딩관계론

[카카오] 두 큐 합 같게 만들기 본문

개발/알고리즘

[카카오] 두 큐 합 같게 만들기

개발자_티모 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))

 

반응형