DHistory

[Baekjoon] Greedy - 16208 귀찮음 본문

Computer Science/Algorithm

[Baekjoon] Greedy - 16208 귀찮음

ddu0422 2023. 8. 14. 19:40

문제

 

16208번: 귀찮음

현우는 무슨 이유에선지 길이 a1, ..., an의, 총 n개의 쇠막대가 필요해졌다. 하지만 그가 가진 것은 길이 a1+...+an의 하나의 쇠막대뿐이었다. 현우는 이 막대를 직접 잘라서 원래 필요하던 n개의 쇠

www.acmicpc.net

 

풀이

"""
n개의 쇠막대
a1 + a2 + a3 + ... + an 하나의 쇠막대
x+y인 막대를 길이 x,y인 두 개의 막대로 자를 때에는 두 막대의 길이의 곱인 xy의 비용이 든다.
최소 비용은?

=== example ===
4
3 5 4 2 => 총 14

5 9 = 45
4 5 = 20
3 2 = 6

"""
n = int(input())
rods = list(map(int, input().split()))[:n]


def solution(rods):
    answer = 0
    total = sum(rods)

    for rod in sorted(rods, reverse=True)[:-1]:
        answer += rod * (total - rod)
        total -= rod
    
    return answer


print(solution(rods))

 

채점 결과

배점이 30점인 문제인 것 같다.