알고리즘

[백준, 파이썬, 11399번] ATM

hminor 2023. 8. 28. 09:55

 

풀이

  • 우선 받은 값을 정렬한 다음 누적 합을 구하면 되는 문제가 됨
  • 그래서 두 가지 방법을 생각
    • 첫째. DP를 활용하여 이전 값을 더 한 값을 해당 배열에 넣고 최종적으로 합산하기.
    • 둘째. 누적 합은 결국 계속해서 다음 값에 해당 값을 남은 수 만큼 더하기 때문에 해당 로직을 생각해서 풀기

 

첫 번째 방식

import sys
input = sys.stdin.readline
n = int(input())
result = 0
li = sorted(map(int,input().rstrip('\n').split()))
for i in range(1,n): li[i] += li[i-1]
print(sum(li))

 

두 번째 방식

import sys
input = sys.stdin.readline
n = int(input())
result = 0
for i in sorted(map(int,input().rstrip('\n').split())):
    result += n*i
    n -= 1
print(result)