본문 바로가기

Algorithm/Baekjoon

Baekjoon #11399 - ATM

목차

1. 문제

2. 입출력 예시

3. 문제 풀이

1. 문제

2. 입출력 예시

입력 예시 출력 예시
5 3 1 4 3 2 32

3. 문제 풀이

이 문제는 굉장히 간단했다. 이를 해결하기 위한 과정을 나열해보았다.

  1. 주어진 배열(P)을 오름차순으로 정렬한다.
  2. 새로운 배열에 주어진 사람의 수(N)만큼 반복하면서 배열의 순서 이전의 모든 값을 더한다.
  3. 새로운 배열 요소의 합을 출력한다.

이를 코드로 나타내면 아래와 같다.

def solution(n, p):
    p.sort()
    t = [sum(p[:i+1]) for i in range(n)]
    print(sum(t))


N = int(input())
P = [int(x) for x in input().split(" ")]

solution(N, P)

위 코드의 메모리는 28,776 KB, 시간은 80 ms가 소요되었다.

만약 새로운 리스트에 제너레이트를 사용하지 않고 반복문으로 나타낸다면 아래와 같다.

def solution(lst):
    t = 0

    for i, _ in enumerate(lst):
        p = sum(lst[:i+1])
        t += p

    print(t)


N = int(input())
P = [int(x) for x in input().split(" ")]
P.sort()

solution(P)

위 코드의 메모리는 28,776 KB으로 동일했으나, 시간은 80 ms4ms가 더 빠른 것을 확인할 수 있다.

'Algorithm > Baekjoon' 카테고리의 다른 글

Baekjoon #1541 - 잃어버린 괄호  (0) 2021.03.22
Baekjoon #5585 - 거스름돈  (0) 2021.03.21
Baekjoon #1931 - 회의실 배정  (0) 2021.03.21
Baekjoon #11047 - 동전 0  (0) 2021.03.20
Baekjoon #2839 - 설탕 배달  (0) 2021.03.20