알고리즘/백준 문제풀이

[백준] 11399 ATM 파이썬 풀이 (그리디)

자바칩 프라푸치노 2021. 6. 24. 15:28

문제링크

문제

  • 사람마다 atm기에 있는 시간이 다르다.
  • 모든 사람이 돈을 인출하는데 필요한 시간의 합이 가장 작도록 만들어라
  • 그리고 그 합을 출력해라

 

 

문제 풀이

  • 시간이 주어질때 앞에서부터 작은 시간이 걸리는 순서대로 줄을 서면 합이 가장 작아진다.
  • 입력 1을 봤을때 1 2 3 3 4 순서로 서야 최소의 값이 나온다.
  • time에 시간을 리스트로 저장하고 오름차순으로 sort한다
  • time[i]번째 사람이 걸리는 시간은 그 전까지의 시간을 다 더한 것에 자신의 시간을 더한 시간이다.

 

코드

import sys
num = int(sys.stdin.readline())
time = list(map(int,sys.stdin.readline().split()))
time.sort()
# print(time)
sum = 0
total =0
for i in range(num):
    sum += time[i]
    total += sum
print(total)
728x90