만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

케이크 굽기

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

요약
케이크 40개의 굽는 시간이 주어지고 오븐이 3대 있을 때, 모든 케이크를 굽는 최소 시간을 구한다.
난이도

보통10점 중 4점

유형
동적 계획법, 그리디, 완전 탐색, 수학
정답자
아직 제출이 없습니다

문제

톰의 생일이 다가오고 있고, 당신은 그의 성대한 생일 파티에 쓸 케이크를 굽는 일을 맡았습니다. 그런데 만들어야 할 케이크는 아주 많은데 시간은 매우 부족해서, 파티 전에 다 끝낼 수 있을지조차 확신할 수 없습니다!

만들어야 할 케이크 목록이 주어지며, 각 케이크는 굽는 데 정해진 시간이 걸립니다. 오븐은 정확히 3개가 있고, 각 오븐은 한 번에 케이크 하나만 구울 수 있습니다. 케이크 하나를 꺼내고 다른 하나를 넣는 데 걸리는 시간은 무시할 수 있다고 할 때, 주어진 케이크 목록을 모두 굽는 데 필요한 최소 시간을 구하세요.

입력

입력은 여러 개의 테스트 케이스로 이루어지며, 각 테스트 케이스는 한 줄에 주어집니다. 각 줄은 정수 nn (단, 1≤n≤401 \le n \le 40)으로 시작하며, 이는 구워야 할 케이크의 개수입니다. 그 뒤에 nn개의 정수 t1,…,tnt_1, \dots, t_n (단, 1≤ti≤301 \le t_i \le 30)이 이어지며, 각각은 케이크 하나를 굽는 데 걸리는 시간(분)입니다. 입력의 끝은 정수 00 하나만 있는 줄로 표시되며, 이 줄은 처리하지 않습니다.

출력

각 테스트 케이스마다, 모든 케이크를 다 굽는 데 필요한 최소 시간(분)을 한 줄에 출력하세요.

예제1

  1. 예제 1

    입력
    1 30
    3 15 10 20
    5 6 7 8 9 10
    0
    
    예상 출력
    30
    20
    15