문제
- 사람마다 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
'알고리즘 > 백준 문제풀이' 카테고리의 다른 글
[백준] 11279 최대힙 파이썬 풀이 (힙) (0) | 2021.06.24 |
---|---|
[백준] 2606 바이러스 파이썬 풀이(DFS와 BFS) (0) | 2021.06.24 |
[백준] 11047 동전0 파이썬 풀이 (그리디) (0) | 2021.06.24 |
[백준] 1541 잃어버린 괄호 파이썬 풀이 (그리디) (0) | 2021.06.24 |
[백준] 1002 피보나치 함수 파이썬 풀이 (동적계획법) (0) | 2021.06.24 |