반응형
https://www.acmicpc.net/problem/11399
1. 문제
각 사람이 돈을 인출하는데 필요한 시간의 합의 최소값을 구하라.
2. 접근
뒷사람은 앞사람이 먼저 끝나야 업무를 처리할 수 있다. 따라서 처리시간이 가장 짧은 사람먼저 업무를 수행하는 것이 가장 빠르다. 그러므로 다음과 같이 수행한다.
1. 업무 처리시간을 오름차순으로 정렬
2. 뒤사람의 처리시간은 앞사람의 처리시간 + 자신의 처리시간
3. 소스코드
n = int(input())
time = list(map(int, input().split()))
def bank(time, n):
time.sort() # 처리시간을 오름차순으로 정렬
for i in range(1, n):
time[i] += time[i-1] # 뒷사람의 처리시간은 앞사람 처리시간 + 자신의 처리시간
return sum(time) # 총합 반환
print(bank(time, n))
반응형
'컴퓨터공학 > 알고리즘' 카테고리의 다른 글
[백준] 10610. 30 (0) | 2020.05.09 |
---|---|
[백준] 2217. 로프 (0) | 2020.05.09 |
DP. 동전 거스름돈과 이항계수 (0) | 2020.05.01 |
동적계획법 소개 (0) | 2020.05.01 |
[codeup] 3720. nCr (0) | 2020.04.20 |