728x90
https://www.acmicpc.net/problem/11399
11399번: ATM
첫째 줄에 사람의 수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄에는 각 사람이 돈을 인출하는데 걸리는 시간 Pi가 주어진다. (1 ≤ Pi ≤ 1,000)
www.acmicpc.net
그리디 알고리즘으로 풀 수 있는 문제로 어떤 순서로 더했을 때 최소가 될지 생각해보면 쉬운 문제입니다.
def solution(N, data_list):
# 데이터 리스트 정렬
# 누적합 리스트 만들기 위해 0 추가
data_list = [0] + sorted(data_list)
# 누적합으로 변경
for idx in range(len(data_list)):
# 0 번 인덱스 스킵
if idx:
data_list[idx] += data_list[idx-1]
# 누적합 모두 더하기
return sum(data_list)
N = int(input())
data_list = list(map(int, input().split()))
print(solution(N, data_list))
728x90
'Coding Test > BaekJoon_Python' 카테고리의 다른 글
백준 14891 <톱니바퀴> Python (0) | 2023.11.21 |
---|---|
백준 14502 <연구소> Python (2) | 2023.11.20 |
백준 16953 <A -> B> Python (1) | 2023.11.18 |
백준 1764 <듣보잡> Python (0) | 2023.11.16 |
백준 1389 <케빈 베이컨의 6단계 법칙> Python (1) | 2023.11.16 |