728x90
반응형
문제 요약
N명의 사람이 ATM 앞에 줄을 서 있다. 각자 돈을 인출하는데 필요한 시간이 다르기 때문에, 줄을 서는 순서가 달라지면 돈을 인출하는데 필요한 시간의 합이 달라진다. 한 사람이 인출하는데 필요한 시간은, 앞 사람의 시간에 본인 시간을 더하면 된다. (예: P1 = 3, P2 = 1, P3 = 4, P4 = 3, P5 = 2일 때, [P1, P2, P3, P4, P5] 순서일 때 시간은 [3, 1, 4, 3, 2]로 총 39분이 걸린다. 개별 시간은 P1은 3, P2는 3+1=4, P3은 3+1+4, P4는 3+1+4+3, P5는 3+1+4+3+2가 된다. [P2, P5, P1, P4, P3] 순서일 때 [1, 2, 3, 3, 4]로 총 32분이 걸린다. 개별 시간은 위와 같은 방법으로 구할 수 있음)
각 사람이 돈을 인출하는데 필요한 시간의 합의 최솟값을 구하는 프로그램을 작성하라.
입력
첫째 줄에 사람의 수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄에는 각 사람이 돈을 인출하는데 걸리는 시간 Pi가 주어진다. (1 ≤ Pi ≤ 1,000)
출력
첫째 줄에 각 사람이 돈을 인출하는데 필요한 시간의 합의 최솟값을 출력한다.
입출력 예시
입력 | 출력 |
5 3 1 4 3 2 |
32 |
코드
N = int(input())
time = list(map(int, input().split()))
time.sort()
now_time = 0
total_time = 0
for i in time:
now_time += i
total_time += now_time
print(total_time)
피드백
문제가 길어서 당황했지만 차근차근 읽으며 손으로 정리하니 문제가 이해되고, 풀이 방법이 떠올랐다.
문제를 보고 피보나치 수열과 비슷하다는 생각이 들어서 더 빨리 해결책을 찾을 수 있었다.
728x90
반응형
'알고리즘' 카테고리의 다른 글
[그리디] 백준 2217번 로프 Python 풀이 (0) | 2021.02.02 |
---|---|
[그리디] 백준 11047번 동전 0 Python 풀이 (0) | 2021.01.31 |
[그리디] 백준 2839번 설탕 배달 Python 풀이 (0) | 2021.01.30 |
그리디 알고리즘 (0) | 2021.01.24 |
알고리즘 문제를 풀며 주의해야 할 사항 (0) | 2020.06.21 |