-
프로그래머스 ) 두 큐 합 같게 만들기 (lv.2)알고리즘/프로그래머스 2022. 8. 30. 19:40
https://school.programmers.co.kr/learn/courses/30/lessons/118667
두개의 큐를 놓고 popleft()와 append()를 반복하면서 두 큐의 합을 동일하게 만드는 문제였다. 여기서 과연 for 문을 몇번 돌 것인가가 질문이었으며 처음에는 두 큐의 길이의 최댓값인 6000000번을 돌도록 설정하였으나 이후 다음의 게시글을 참고하여 최대 이동 횟수 (len(queue1)-1)x3 + 마지막 이동 후 검사 1 을 이용하도록 수정할 수 있었다.
https://school.programmers.co.kr/questions/35216
from collections import deque def solution(queue1, queue2): answer = 0 sum1 = sum(queue1) sum2 = sum(queue2) cnt = sum1 + sum2 if cnt % 2 != 0 : return -1 queue1 = deque(queue1) queue2 = deque(queue2) for _ in range((len(queue1)-1)*3 + 1 ): if sum1 == sum2 : return answer elif sum1 < sum2 : tmp = queue2.popleft() sum1 += tmp sum2 -= tmp queue1.append(tmp) elif sum2 < sum1 : tmp = queue1.popleft() sum2 += tmp sum1 -= tmp queue2.append(tmp) answer += 1 return -1
'알고리즘 > 프로그래머스' 카테고리의 다른 글
프로그래머스) 퍼즐 조각 채우기 (lv.3) (0) 2022.08.21 프로그래머스) 아이템 줍기 (lv.3) (0) 2022.08.21 프로그래머스) 전력망을 둘로 나누기(lv.2) (0) 2022.08.17