https://school.programmers.co.kr/learn/courses/30/lessons/118667
1차원적으로 보자면 매우 간단한 문제이다.
큐1과 큐2가 같게 만들 떄까지 큰 것에서 작은 것으로 pop,left를 반복해주면 된다.
예를들어 큐1의 합이 15, 큐2의 합이 16이라면 큐2에서 popleft, queue1.append()를하면 된다.
다만 어디까지 for문 또는 while문을 돌려야하나 그것이 문제였다.
대충 찍으면 답이 나올 것 같지만 정확한 이해가 필요했기에 검색을 했다.
(사실 큰 것에서 작은 것으로 popleft append는 생각 했었지만 예시 1번이 작은 것에서 큰 것으로 popleft append로 설명 되어 있어서 햇갈려 검색한 것도 있다.)
https://www.youtube.com/watch?v=rntT16XgqRc
유튜브에 간단한 검색만으로 쉽게 이해할 수 있었다.
투포인터를 활용해 max값을 쉽게 알 수 있었다.
from collections import deque
def solution(queue1, queue2):
q1 = deque(queue1)
q2 = deque(queue2)
sum1 = sum(q1)
sum2 = sum(q2)
lengh = len(queue1) + len(queue2)
answer = -1
for i in range(0,lengh * 2):
if sum1 == sum2:
answer = i
break
elif sum1 > sum2:
item = q1.popleft()
sum1 -= item
q2.append(item)
sum2 += item
else:
item = q2.popleft()
q1.append(item)
sum1 += item
sum2 -= item
return answer
'알고리즘' 카테고리의 다른 글
*프로그래머스)카펫-python (0) | 2023.02.05 |
---|---|
*프로그래머스)뒤에 있는 큰 수 찾기-python (0) | 2023.02.04 |
프로그래머스)수식 최대화-pyhton (0) | 2023.02.01 |
프로그래머스) 메뉴 리뉴얼-python (0) | 2023.01.30 |
백준) 거스름돈-python (0) | 2023.01.30 |