반응형
https://www.acmicpc.net/problem/11399
n = int(input())
p = list(map(int, input().split()))
p.sort()
ans = 0
for i in range(n):
ans += p[i]*(n-i)
print(ans)
간단한 문제입니다. 설명도 자세하게 적어줘서 어떻게 접근할지 금방 떠올랐어요. 앞에서 걸렸던 시간이 뒤에서도 계속 해서 반복적으로 걸리기 때문에 최소 시간을 구하기 위해서는 시간이 오래 걸리는 경우일수록 뒤에 있으면 된다는 점을 알아낸다면 그 뒤로는 쉽습니다. 저는 간단하게 sort하고 반복해서 걸리는 친구들을 곱셈으로 처리해서 다 더해줬습니다. 아마 dp로도 풀려면 풀 수 있을 것 같아요. 피보나치 수열 문제 풀던 것처럼 다 구해놓고 마지막에 sum해주면 되겠죠.
반응형
'Problem Solving > BOJ' 카테고리의 다른 글
[BOJ][Python]17626번 풀이 (0) | 2022.06.07 |
---|---|
[BOJ][Python]1535번 풀이 (0) | 2022.06.06 |
[BOJ][Python]12865번 풀이 (0) | 2022.06.05 |
[BOJ][Python]14606번 풀이 (0) | 2022.06.05 |