최대 1 분 소요

문제(1461번)

문제 바로가기

내가 푼 답

import sys

input = sys.stdin.readline

n, m = map(int, input().split())

book_list = list(map(int, input().split()))

result = 0
book_list.sort()
left = []
right = []
for i in book_list:
    if i < 0:
        left.append(abs(i))
    else:
        right.append(i)

left.sort(reverse=True)
right.sort(reverse=True)
dir_list = []
for i in range(0, len(left), m):
    dir_list.append(left[i])

for i in range(0, len(right), m):
    dir_list.append(right[i])

dir_list.sort(reverse=True)

for i in dir_list:
    result += i * 2

result -= max(dir_list)

print(result)

고찰

처음에 할때는 음수랑 양수를 나누지 않고 하였는데 그결과 음수랑 양수사이가 걸치는 순간 길이가 한 곳에 2번을 지나야 하는데 이러면 최소걸음을 만족하지 못하므로 양수와 음수를 나누어서 처리하는 것이 가장 중요하고 그외에는 딱히 별건 없지만 제출할 때 출력문이 제대로 되어있는지 필요없는 출력문이 있는지 확인하는 습관을 가져야겠다고 생각했다.

댓글남기기