세용용용용 2023. 6. 2. 21:20

나의 코드

from collections import deque
def solution(queue1, queue2):
    answer = 0
    queue1 = deque(queue1)
    queue2 = deque(queue2)
    limit = len(queue1)*4

    while True:
        if sum(queue1) == sum(queue2):
            break
        elif sum(queue1) > sum(queue2):
            queue2.append(queue1.popleft())
            answer+=1
        elif sum(queue2) > sum(queue1):
            queue1.append(queue2.popleft())
            answer+=1
       
        if answer==limit:
            answer = -1
            break
    print(answer)
           
    return answer

solution([3, 2, 7, 2], [4, 6, 5, 1])
 
 
 

흑흑 타임 아웃이 떠버린다..

수정코드

from collections import deque
def solution(queue1, queue2):
    answer = 0
    queue1 = deque(queue1)
    queue2 = deque(queue2)
    limit = len(queue1)*4

    queue1_sum = sum(queue1)
    queue2_sum = sum(queue2)

    total = queue1_sum + queue2_sum
    #만약 두 리스트 합이 짝수가 아니면 같게 만들수 없음...
    if total%2 != 0:
        return -1
   
    while True:
       
        if queue1_sum > queue2_sum:
            pop_value = queue1.popleft()
            queue2.append(pop_value)
            queue1_sum -= pop_value
            queue2_sum += pop_value
            answer+=1
        elif queue2_sum > queue1_sum:
            pop_value = queue2.popleft()
            queue1.append(pop_value)
            queue1_sum+=pop_value
            queue2_sum-=pop_value
            answer+=1
        else:
            break
       
        if answer==limit:
            answer = -1
            break
    print(answer)
           
    return answer

solution([3, 2, 7, 2], [4, 6, 5, 1])

점점 조건이 까다로워진다 ... 흐흐흐흑