728x90
반응형
💡 solutions
💬 첫 번째 풀이, deque 자료 구조 활용하여 반복문으로 두 큐의 합 같게 연산, 두 큐의 최대 길이만큼 반복했는데도 두 큐의 합을 같게 하지 못하면 -1 반환하는 조건 추가
💬 두 번째 풀이, 두 개의 큐를 하나의 큐로 합쳐서 투 포인터로 두 큐의 합이 같아지는지 확인
🤖 code
# 첫 번째 풀이
from collections import deque
def solution(queue1, queue2):
queue1, queue2 = deque(queue1), deque(queue2)
sum1, sum2 = sum(queue1), sum(queue2)
target_sum = (sum1 + sum2) // 2
cnt = 0
if max(queue1) > target_sum or max(queue2) > target_sum :
return -1
while sum1 != sum2:
if sum1 > sum2:
cur = queue1.popleft()
sum1 -= cur
queue2.append(cur)
sum2 += cur
else:
cur = queue2.popleft()
sum2 -= cur
queue1.append(cur)
sum1 += cur
cnt += 1
if cnt >= 300000 * 2:
return -1
return cnt
# 다른 풀이 참고하여 두 번째 풀이
def solution(queue1, queue2):
sum1, sum2 = sum(queue1), sum(queue2)
target_sum = (sum1 + sum2) // 2
new_queue = queue1 + queue2
new_queue_len = len(new_queue)
start, end = 0, len(queue1) - 1
cnt = 0
while sum1 != target_sum:
if sum1 > target_sum:
sum1 -= new_queue[start]
start += 1
elif sum1 < target_sum:
end += 1
if end >= new_queue_len:
return - 1
sum1 += new_queue[end]
cnt += 1
return cnt
📌 problem
https://school.programmers.co.kr/learn/courses/30/lessons/118667
반응형
'Algorithm > 카카오 기출' 카테고리의 다른 글
[프로그래머스] 2022 KAKAO TECH INTERNSHIP/등산코스 정하기/파이썬/python (1) | 2022.09.12 |
---|---|
[프로그래머스] 2022 KAKAO TECH INTERNSHIP/성격 유형 검사하기/파이썬/python (0) | 2022.09.10 |