목차
1. 문제
2. 입출력 예시
입력 예시 | 출력 예시 |
---|---|
5 3 1 4 3 2 | 32 |
3. 문제 풀이
이 문제는 굉장히 간단했다. 이를 해결하기 위한 과정을 나열해보았다.
- 주어진 배열(
P
)을 오름차순으로 정렬한다. - 새로운 배열에 주어진 사람의 수(
N
)만큼 반복하면서 배열의 순서 이전의 모든 값을 더한다. - 새로운 배열 요소의 합을 출력한다.
이를 코드로 나타내면 아래와 같다.
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 ms
로 4ms
가 더 빠른 것을 확인할 수 있다.
'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 |