https://school.programmers.co.kr/learn/courses/30/lessons/118667
나의 풀이
생각나는 대로 직관적으로 작성하고 이게 되나..? 했는데 맞았다!
대신 많이 지저분하다.
from collections import deque
def solution(queue1, queue2):
answer = 0
q1 = deque(queue1)
q2 = deque(queue2)
sum_ = sum(q1) + sum(q2)
mid_ = sum_ // 2
q1_s = sum(q1)
q2_s = sum(q2)
while q1_s != mid_:
if q1_s > mid_:
p = q1.popleft()
q1_s -= p
q2.append(p)
q2_s += p
if len(q1) == 0:
return -1
elif q2_s > mid_:
p = q2.popleft()
q2_s -= p
q1.append(p)
q1_s += p
if len(q2) == 0:
return -1
if answer > (len(q1) + len(q2))*2:
return -1
answer += 1
return answer
다른 사람 풀이
깔끔하고 보기가 편하다.
def solution(que1, que2):
queSum = (sum(que1) + sum(que2))
if queSum % 2:
return -1
target = queSum // 2
n = len(que1)
start = 0
end = n - 1
ans = 0
cur = sum(que1)
que3 = que1 + que2
while cur != target:
if cur < target:
end += 1
if end == n * 2:
return -1
cur += que3[end]
else:
cur -= que3[start]
start += 1
ans += 1
return ans
'Coding Test > 프로그래머스' 카테고리의 다른 글
[Level 2] / [Python] 하노이의 탑 (0) | 2022.10.12 |
---|---|
[Level 2] / [Python] 전력망을 둘로 나누기 (0) | 2022.10.12 |
[Level 2] / [Python] 가장 큰 사각형 찾기 - DP (Dynamic Programming) (0) | 2022.10.10 |
[Level 2] / [Python] 배달 - 다익스트라 (Dijkstra) (0) | 2022.10.08 |
[Level 2] - 가장 큰 수 (0) | 2022.06.01 |