반응형
문제 설명
ATM기 앞에 사람이 N명 서있는데, 이 N명의 사람들이 돈을 인출하는데 걸리는 시간은 제각각이다.
이 때, 앞 사람의 돈을 뽑는 시간이 길 수록, 뒤에 있는 사람들의 대기 시간은 길어지게 된다.
각 사람이 돈을 인출하는데 필요한 시간(대기시간+뽑는시간)의 합의 최솟값을 구하면 된다.
풀이 과정
내가 ATM기에 줄을 서 있다고 가정해보자. 나의 대기시간이 짧아지려면 어떤 상황이 되어야 하는가?
당연히 내 앞에서 돈을 뽑는 사람들이 돈을 빨리빨리 뽑아주면 된다.
즉, 돈을 뽑는 시간이 짧은 사람들 부터 앞에 오도록 하면 된다.
따라서, 시간순으로 정렬을 한 후에 모든 사람들의 시간을 합하면 정답이 된다.
n = int(input())
arr = list(map(int, input().split()))
arr.sort()
ans = 0
for i in range(n):
ans += arr[i]
arr[i] = ans
print(sum(arr))
전체 문제 & 코드는 위의 깃에 정리되어 있습니다.
팔로우 & 맞팔은 환영입니다 !
반응형
'Algorithm > Greedy' 카테고리의 다른 글
[백준] 2217 로프 (Python 파이썬) (0) | 2021.04.09 |
---|---|
[백준] 13305 주유소 (Python 파이썬) (0) | 2021.04.08 |
[백준] 1541 잃어버린 괄호 (Python 파이썬) (0) | 2021.04.08 |
[백준] 1931 회의실 배정 (Python 파이썬) (0) | 2021.04.08 |
[백준] 11047 동전 0 (Python 파이썬) (0) | 2021.04.07 |