백준 11399번 ATM
백준 11399번 ATM 문제는 사용자들마다 사용 시간이 다르고, 그 사용시간에 따라서 다음 사용자의 대기시간 + 이용시간이 점점 누적된다.
이에 모든 사람들이 최소한의 시간값을 구하는 문제이다.
[문제풀이과정]
1. 사람들마다 ATM을 이용하는 시간이 정해져 있고, 각 사람들의 순서에 따라서 전체 사용자의 사용시간이 결정된다.
2. 적게 걸리는 사람들이 앞에 있을 수록 전체 사용시간은 줄어든다. (정렬이 필요하다)
3. 대기시간 + 현재 사용자의 이용시간
4. 이 문제에서 중요한 것은 정렬을 할 경우, 오름차순이 최소 값을 보장하는가
예)
- [1,5] 일 경우 1분 + 6분 = 7분
- [5,1] 일 경우 5분 + 6분 = 11분
[코드]
total_count = int(input())
times = sorted(map(int,(input().split())))
current = 0
result = 0
for t in times:
current += t
result += current
print(result)
시간 복잡도는 내장함수 sorted()는 내부적으로 Timesort 사용한다. O(N log N) + O(N) = O(N log N)
'알고리즘 > 파이썬' 카테고리의 다른 글
| 백준 1541번 잃어버린 괄호 [그리드 알고리즘] (0) | 2026.03.26 |
|---|---|
| 백준 1931번 회의실 배정 [그리드 알고리즘] (0) | 2026.03.26 |
| 백준 11047번 동전 0 [그리드 알고리즘] (0) | 2026.03.26 |
| 백준 2839번 설탕 배달 [그리드 알고리즘] (0) | 2026.03.26 |
| 그리드 알고리즘 (Greedy Algorithm) (0) | 2026.03.26 |