본문 바로가기

코딩테스트/Python

[Python] 백준 #11399 - ATM

문제


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

 

11399번: ATM

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

www.acmicpc.net

 

 

 

풀이


n = int(input())
arr = list(map(int,input().split()))
t = 0
arr.sort()
for i in range(len(arr)):
    t += sum(arr[:i+1])
print(t)

그리디 알고리즘을 사용해야한다. 

그리디 알고리즘이란 단순하면서 무식하게, 탐욕적으로 문제를 푸는 알고리즘이다. 

매 순간 가장 좋아보이는 것을 선택하며, 현재의 선택이 나중에 미칠 영향은 고려하지 않는다.

이러한 그리디 알고리즘이 문제에 나왔을 때, "가장 큰 순서대로","가장 작은 순서대로" 라는 기준을 제시해준다.

그리디 알고리즘은 정렬 알고리즘과 짝을 이뤄 출제된다.

 

 

최소한의 시간을 구해야하므로 입력받은 수 들을 오름차순으로 정렬해주고 문제를 풀면된다.

 

 

 

 

 

 

탐욕법 개념 출처 -> https://injekim97.tistory.com/207