[백준] 1461번 도서관

거북이·2023년 2월 19일
0

백준[골드5]

목록 보기
24/82
post-thumbnail

💡문제접근

  • 전에 풀었던 [[백준] 1744번 수 묶기]와 동일한 유형의 문제였다. 양수 리스트와 음수 리스트를 따로 만들어서 접근하면 해결할 수 있다.

💡코드(메모리 : 31256KB, 시간 : 56ms)

import sys
input = sys.stdin.readline

N, M = map(int, input().strip().split())
book = list(map(int, input().strip().split()))

plus_book = []
minus_book = []
temp = 0
for i in book:
    if i >= 0:
        plus_book.append(i)
    else:
        minus_book.append(i)
	
    # 리스트의 절댓값 중에서 최대 지점의 경우 다시 원점으로 돌아오지 않고 편도로 계산해주기 위해 별도로 변수를 이용해서 선언해줌
    if abs(i) > temp:
        temp = abs(i)

plus_book.sort(reverse=True)
minus_book.sort()
distance = 0
for i in range(0, len(plus_book), M):
    if plus_book[i] != temp:
    	# 왕복으로 계산
        distance += plus_book[i] * 2

for i in range(0, len(minus_book), M):
    if abs(minus_book[i]) != temp:
    	# 왕복으로 계산
        distance += abs(minus_book[i]) * 2

# 편도로 계산
distance += temp
print(distance)

💡소요시간 : 24m

0개의 댓글