import copy
def getSum(array):
sum = 0
for i in array:
sum = sum + i
return sum
def solution(queue1, queue2):
answer = 0
# 초기에 정답인지 확인하기
if getSum(queue1) == getSum(queue2):
answer = 0
return answer
# queue1와 queue2를 연결해서 myQ로 만듬.
myQ = queue2 + queue1
qLen = len(myQ)
# myQ-myQ를 연결
myQ = myQ + myQ
# 합을 통해 목표로 만들어야 하는 targetSum 찾기
allSum = getSum(queue1) + getSum(queue2)
targetSum = allSum / 2
# 부분큐를 통해 부분합 구하기 -> 부분합이 targetSum이 되면 정답!
partQ = copy.deepcopy(queue1)
for i in myQ:
# 부분큐의 길이가 qLen보다는 짧아야 함...!
if len(partQ) > qLen:
break
if (getSum(partQ) < targetSum):
partQ.append(i)
answer += 1
elif (getSum(partQ) > targetSum):
partQ.pop(0)
answer += 1
else:
break
print(partQ)
if (getSum(partQ) != targetSum):
answer = -1
return answer
😁 정답
import copy
def getSum(array):
sum = 0
for i in array:
sum = sum + i
return sum
def solution(queue1, queue2):
answer = 0
Sum1 = getSum(queue1)
Sum2 = getSum(queue2)
# 초기에 정답인지 확인하기
if Sum1 == Sum2:
answer = 0
return answer
# queue1와 queue2를 연결해서 myQ로 만듬.
myQ = queue1 + queue2
qLen = len(myQ)
# myQ-myQ를 연결
myQ = myQ + myQ
# 합을 통해 목표로 만들어야 하는 targetSum 찾기
allSum = Sum1 + Sum2
targetSum = (int)(allSum / 2)
# 부분큐를 통해 부분합 구하기 -> 부분합이 targetSum이 되면 정답!
i = (int)(qLen / 2) - 1
pushIndex = (int)(qLen / 2)
popIndex = 0
while(i < len(myQ)):
if (Sum1 < targetSum):
Sum1 += myQ[pushIndex]
pushIndex += 1
answer += 1
elif (Sum1 > targetSum):
Sum1 -= myQ[popIndex]
answer += 1
popIndex += 1
else:
break
i = i + 1
if (Sum1 != targetSum):
answer = -1
return answer