https://school.programmers.co.kr/learn/courses/30/lessons/118667#
내 풀이
1. 먼저 두 큐의 합이 홀수인 경우를 걸러준다
2. 두 큐의 합을 같게 만들기 위해서는 큰 큐에서 작은 큐로 하나씩 넘겨주는것이다.
3. 2번과정을 반복하면 두 큐의 합이 같아지는 순간이 온다
4. 두 큐의 합이 절대 같아질 수 없는 경우가 존재하는데 큐에서 숫자를 넘겨줄때마다 연산회수를 세고 기준점을 넘어가면 -1을 리턴한다
5. 기준점의 경우 두 큐의 길이의 합으로 설정하게 되면 걸리는 케이스가 있어서 *2를 통해 여유있게 설정한다
from collections import deque
def solution(queue1, queue2):
q1 = deque(queue1)
q2 = deque(queue2)
s1=sum(q1)
s2=sum(q2)
if (s1+s2)%2==1:
return -1
lim=(len(q1)+len(q2))*2
cnt=0
while s1!=s2:
if cnt>=lim:
return -1
while s1>s2:
tmp=q1.popleft()
q2.append(tmp)
s1-=tmp
s2+=tmp
cnt+=1
while s1<s2:
tmp=q2.popleft()
q1.append(tmp)
s2-=tmp
s1+=tmp
cnt+=1
return cnt
배운 점
1. sum을 자주 사용할경우 앞에서 변수로 설정을 해주고 연산을 통해 관리하는 것이 효율적이다
반응형
'Algorithm > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 파이썬 문제풀이 - 방문 길이 (0) | 2023.06.04 |
---|---|
[프로그래머스] SQL 문제풀이 - 상품을 구매한 회원 비율 구하기 (0) | 2023.06.03 |
[프로그래머스] 파이썬 문제풀이 - 순위 (0) | 2023.05.29 |
[프로그래머스] SQL 문제풀이 - 입양 시각 구하기(2) (0) | 2023.05.24 |
[프로그래머스] 파이썬 문제풀이 - 합승 택시 요금 (0) | 2023.05.23 |
댓글