오도원입니다.

건강과 행복을 위하여

컴퓨터공학/알고리즘

[백준] 11399. ATM

오도원공육사 2020. 5. 9. 16:30
반응형

https://www.acmicpc.net/problem/11399

 

11399번: ATM

첫째 줄에 사람의 수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄에는 각 사람이 돈을 인출하는데 걸리는 시간 Pi가 주어진다. (1 ≤ Pi ≤ 1,000)

www.acmicpc.net

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