Coding Test/BaekJoon_Python

백준 11399 <ATM> Python

JunOnJuly 2023. 11. 19. 20:28
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