아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

울타리 수리

면접 대비

시간 제한1초메모리 제한128 MB

요약
주어진 길이의 널빤지 N개를 만들기 위해 긴 판자를 자른다. 자르는 비용은 자르는 조각의 길이와 같을 때 최소 총비용을 구한다.
난이도

보통10점 중 5점

유형
그리디, 힙, 정렬, 조합론
정답자
아직 제출이 없습니다

문제

농부 존은 목장을 둘러싼 울타리의 일부를 수리하려고 한다. 울타리를 재어 보니, 각각 정수 길이 LiL_i (1≤Li≤50,0001 \le L_i \le 50{,}000)를 갖는 널빤지 NN개 (1≤N≤20,0001 \le N \le 20{,}000)가 필요하다는 것을 알았다. 존은 이 NN개의 널빤지로 잘라 낼 수 있을 만큼 긴 널빤지 하나, 즉 길이가 모든 LiL_i의 합과 같은 널빤지 하나를 산다. 톱질할 때 톱밥으로 사라지는 길이("kerf")는 무시한다.

존에게는 나무를 자를 톱이 없어서, 이 긴 널빤지를 들고 이웃 농부 돈의 농장으로 찾아가 톱을 빌려 달라고 정중히 부탁한다. 농부 돈은 톱을 빌려주는 대신, N−1N-1번의 톱질 각각에 요금을 매기기로 한다. 한 번의 톱질 요금은 그때 잘리는 나무 조각의 길이와 정확히 같다. 예를 들어 길이 21인 조각을 자르면 21원이 든다.

NN개의 널빤지를 만들려면 모두 N−1N-1번 잘라야 한다. 자르는 순서와 위치는 존이 마음대로 정할 수 있고, 순서에 따라 중간 조각들의 길이가 달라지므로 총 요금도 달라진다. 존이 NN개의 널빤지를 만드는 데 써야 하는 최소 금액을 구하여라.

입력

  • 첫째 줄: 널빤지의 개수 NN
  • 둘째 줄부터 N+1N+1번째 줄까지: 각 줄에 필요한 널빤지의 길이 LiL_i가 하나씩 주어진다.

출력

  • 첫째 줄: N−1N-1번의 톱질로 널빤지들을 만드는 데 필요한 최소 금액

힌트

처음 널빤지의 길이는 8+5+8=218+5+8=21이다. 첫 번째 톱질은 21원이 들고, 이 널빤지를 길이 13과 8로 자른다. 두 번째 톱질은 13원이 들고, 13을 8과 5로 자르므로 총합은 21+13=3421+13=34원이 된다. 만약 21을 16과 5로 잘랐다면 두 번째 톱질에 16원이 들어 총 37원이 되고, 이는 34원보다 많다.

예제1

  1. 예제 1

    입력
    3
    8
    5
    8
    
    예상 출력
    34