UP
[백준 11399 : PYTHON] ATM 본문
문제 풀기 : 11399번
문제
ATM이 1대밖에 없다. 지금 이 ATM앞에 N명의 사람들이 줄을 서있다.
사람은 1번부터 N번까지 번호가 매겨져 있으며, i번 사람이 돈을 인출하는데 걸리는 시간은 Pi분이다.
사람들이 줄을 서는 순서에 따라서, 돈을 인출하는데 필요한 시간의 합이 달라지게 된다. 예를 들어, 총 5명이 있고, P1 = 3, P2 = 1, P3 = 4, P4 = 3, P5 = 2 인 경우 [1, 2, 3, 3, 4] 순으로 출력하면 각 사람이 돈을 인출하는데 필요한 시간의 합은 1+3+6+9+13 = 32분이다. 이 방법보다 더 필요한 시간의 합을 최소로 만들 수는 없다.
줄을 서 있는 사람의 수 N과 각 사람이 돈을 인출하는데 걸리는 시간 Pi가 주어졌을 때, 각 사람이 돈을 인출하는데 필요한 시간의 합의 최솟값을 구한다.
문제풀이
누적되는 시간의 합이므로 필요한 시간을 오름차순으로 정렬한 뒤 합을 구한다.
전체코드
# n : 사람의 수, p = 돈을 인출하는데 걸리는 시간
n = int(input())
p = list(map(int, input().split()))
p.sort()
result = 0
# 각 사람마다 인출하는데 걸리는 시간
sum = 0
for i in p:
sum += i
result += sum
print(result)
반응형
'알고리즘 > 그리디' 카테고리의 다른 글
[백준 1744 : PYTHON] 수 묶기 (0) | 2020.10.23 |
---|---|
[백준 1931 : PYTHON] 회의실 배정 (0) | 2020.10.23 |
[백준 1783 : PYTHON] 병든 나이트 (0) | 2020.10.20 |
[백준 10610 : PYTHON] 30 (0) | 2020.10.18 |
[백준 2875 : PYTHON] 대회 or 인턴 (0) | 2020.10.18 |
Comments