[Algorithm] 백준 알고리즘 - 1461
문제(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번을 지나야 하는데 이러면 최소걸음을 만족하지 못하므로 양수와 음수를 나누어서 처리하는 것이 가장 중요하고 그외에는 딱히 별건 없지만 제출할 때 출력문이 제대로 되어있는지 필요없는 출력문이 있는지 확인하는 습관을 가져야겠다고 생각했다.
댓글남기기