-
[백준 1461] 도서관Algorithm/Source Code 2022. 2. 11. 00:07반응형
문제
세준이는 도서관에서 일한다. 도서관의 개방시간이 끝나서 세준이는 사람들이 마구 놓은 책을 다시 가져다 놓아야 한다. 세준이는 현재 0에 있고, 사람들이 마구 놓은 책도 전부 0에 있다. 각 책들의 원래 위치가 주어질 때, 책을 모두 제자리에 놔둘 때 드는 최소 걸음 수를 계산하는 프로그램을 작성하시오. 세준이는 한 걸음에 좌표 1칸씩 가며, 책의 원래 위치는 정수 좌표이다. 책을 모두 제자리에 놔둔 후에는 다시 0으로 돌아올 필요는 없다. 그리고 세준이는 한 번에 최대 M권의 책을 들 수 있다.
입력
첫째 줄에 책의 개수 N과, 세준이가 한 번에 들 수 있는 책의 개수 M이 주어진다. 둘째 줄에는 책의 위치가 주어진다. N과 M은 50보다 작거나 같은 자연수이다. 책의 위치는 0이 아니며, 절댓값은 10,000보다 작거나 같은 정수이다.
출력
첫째 줄에 정답을 출력한다.
solution.py
# 책 수 N 한 번에 들 수 있는 책 수 M N, M = map(int, input().split()) arr = list(map(int, input().split())) left = [] right = [] max_value = 0 for i in arr: if i < 0: left.append(i) else: right.append(i) if abs(i) > abs(max_value): max_value = i dist = [] right.sort(reverse=True) left.sort() for i in range(0, len(right), M): if right[i] != max_value: dist.append(right[i]) for i in range(0, len(left), M): if left[i] != max_value: dist.append(left[i]) answer = abs(max_value) for i in dist: answer += abs(i * 2) print(answer)
출처
반응형'Algorithm > Source Code' 카테고리의 다른 글
[백준 2096] 내려가기 (0) 2022.02.13 [백준 1806] 부분합 (0) 2022.02.11 [백준 2628] 종이자르기 (0) 2022.02.09 [백준 2531] 회전초밥 (0) 2022.02.08 [백준 20056] 마법사 상어와 파이어볼 (0) 2022.02.05