백준
백준 1461 도서관 (파이썬)
MC류짱
2022. 12. 15. 19:07
풀이 및 해설(주석)
import sys
def main():
# 일단 정렬
books.sort()
# 가장 긴 거리 모두 음수일 수 있으므로 둘 다 abs처리
max_dist = max(abs(books[0]), abs(books[-1]))
# 음수, 양수 따로 반복문을 돌 것 이기때문에 기준 점 정하기
turn_idx = N
# 이 때 모두 음수라면 turn_idx는 그냥 N일 것이니까 양수 일 때의 반복문을 돌지 않음
for i in range(N):
if books[i] > 0:
turn_idx = i
break
rst = 0
for i in range(N-1, turn_idx-1, -M):
rst += books[i] * 2
for i in range(0, turn_idx, M):
rst += abs(books[i]) * 2
return rst - max_dist
if __name__ == '__main__':
N, M = map(int, sys.stdin.readline().strip().split())
books = list(map(int, sys.stdin.readline().strip().split()))
print(main())
후기
- 처음에 모든 책이 음수일 경우를 생각 못해서 맞왜틀 시전했음..
- 차라리 음수, 양수 리스트를 나눠서 했으면 헤메지 않았을 것을..