[Python] 백준 알고리즘 온라인 저지 11399 ATM
https://www.acmicpc.net/problem/11399
그리디 알고리즘 문제로 빠른 시간 순으로 정렬하고 두 개의 리스트를 이용해 하나에는 더해진 값들을 저장하며 풀이하였습니다. 난이도는 어렵지 않았습니다.
코드
import sys
input = sys.stdin.readline
n = int(input())
minutes = sorted(list(map(int, input().split())))
result = []
result.append(minutes[0])
for i in range(1, n):
result.append(minutes[i] + result[i-1])
print(sum(result))
풀이
최소값을 구하기 위해서는 가장 빠르게 돈을 뽑는 사람 순으로 정렬해야 한다. 간결한 코드를 위해서 minutes 리스트를 정렬과 함께 선언하고 각 값들을 result 리스트에 각 순서의 사람들이 돈을 뽑기 위해 걸리는 시간을 같은 순서로 추가했습니다. 우선 첫 번째 사람은 걸리는 시간이 항상 자신이 걸리는 시간이므로 미리 추가했고 이후부터는 자신의 시간과 전 사람들이 걸린 시간에 자기 자신이 걸리는 시간을 더해줬습니다.
이렇게 완성된 result 리스트의 요소들을 모두 더하면 문제에서 원하는 최소값을 구할 수 있습니다.
풀이 결과
'알고리즘' 카테고리의 다른 글
백준 1158번 요세푸스 문제 파이썬 풀이 (0) | 2022.03.08 |
---|---|
백준 11053번 가장 긴 증가하는 부분 수열 파이썬 풀이 (0) | 2022.03.05 |
백준 10845번 큐 파이썬 풀이 (0) | 2022.03.02 |
백준 11052번 카드 구매하기 파이썬 풀이 (0) | 2022.02.26 |
백준 2164번 카드2 파이썬 풀이 (0) | 2022.02.24 |