알고리즘
[백준 알고리즘] 1461번 도서관. 파이썬(python)
삶은겨란
2022. 7. 13. 18:39
제일 먼 거리를 마지막에 방문하는 것이 포인트
n,m=map(int,input().split())
a=list(map(int,input().split()))
positive=[]
nagative=[]
for i in range(n):
if a[i]>0: # 양수
positive.append(a[i])
else: # 음수
nagative.append(a[i])
positive.sort(reverse=True) # 내림차순
nagative.sort() # 오름차순
result=0
visit=[]
for i in range(0,len(nagative),m): # m개씩 띄어서
visit.append(-nagative[i]) # 양수로 바꿔 저장
for i in range(0,len(positive),m):
visit.append(positive[i])
result=max(visit) # 가장 큰 값은 마지막에 방문하므로 더하기 (돌아올 필요가 없어서 *2를 안함)
visit.pop(visit.index(max(visit))) # 가장 큰 값 리스트에서 제거
result+=sum(visit)*2 # 나머지 값들을 더해서 *2
print(result)