무거운 상자가 많이 있으며 가능한 적은 수의 스택에 쌓으려고합니다. 문제는 지원할 수있는 것보다 많은 상자를 상자에 쌓을 수 없으므로 더 큰 상자는 스택의 맨 아래에 있어야합니다.
도전
입력 : 전체 박스 무게 목록 (kg 단위).
출력 : 상자 스택을 설명하는 목록 목록입니다. 이것은 입력에 가능한 가장 적은 수의 스택을 사용해야합니다. 유효한 스택이 되려면 스택의 각 상자 무게가 위에있는 모든 상자 무게의 합보다 크거나 같아야합니다.
유효한 스택의 예
(맨 아래 순서로)
- [삼]
- [1, 1]
- [3, 2, 1]
- [4, 2, 1, 1]
- [27, 17, 6, 3, 1]
- [33, 32, 1]
- [999, 888, 99, 11, 1]
유효하지 않은 스택의 예
(아래에서 위로)
- [1, 2]
- [3, 3, 3]
- [5, 5, 1]
- [999, 888, 777]
- [4, 3, 2]
- [4321, 3000, 1234, 321]
테스트 사례 예
1
IN: [1, 2, 3, 4, 5, 6, 9, 12]
OUT: [[12, 6, 3, 2, 1], [9, 5, 4]]
2
IN: [87, 432, 9999, 1234, 3030]
OUT: [[9999, 3030, 1234, 432, 87]]
삼
IN: [1, 5, 3, 1, 4, 2, 1, 6, 1, 7, 2, 3]
OUT: [[6, 3, 2, 1], [7, 4, 2, 1], [5, 3, 1, 1]]
4
IN: [8, 5, 8, 8, 1, 2]
OUT: [[8, 8], [8, 5, 2, 1]]
규칙과 가정
- 표준 I / O 규칙 및 금지 허점 적용
- 편리한 I / O 형식을 사용하십시오
- 일관된 한 스택은 위에서 아래로 또는 아래에서 위로 설명 될 수 있습니다.
- 스택 내 상자가 아닌 스택 순서는 중요하지 않습니다.
- 입력 상자를 미리 정렬 된 목록으로 사용할 수도 있습니다. 정렬 자체로 일반적인 문제가 해결되지 않는 한 순서는 입력에 특히 중요하지 않습니다.
- 최적의 스택 구성이 두 개 이상인 경우 그 중 하나를 출력 할 수 있습니다
- 상자가 하나 이상 있고 모든 상자의 무게가 1kg 이상이라고 가정 할 수 있습니다
- 최소 9,999kg의 무게를 지탱해야합니다.
- 최소 9,999 개의 총 상자를 지원해야합니다.
- 무게가 같은 상자는 구별 할 수 없으므로 어느 상자를 어디에 사용했는지 주석을 달 필요가 없습니다.
행복한 골프! 행운을 빕니다!
2
가중치를 정렬 된 순서로 가져갈 수 있습니까? (오름차순 또는 내림차순)
—
Arnauld
"최소한 총 9,999 개의 박스를 지원해야합니다." 여기서 "지원"은 어떻게 해석됩니까? 프로그램이 그러한 크기의 입력을받을 수 있어야한다는 의미입니까, 아니면 프로그램이 실제로 적절한 시간 내에 답변을 제공해야한다는 의미입니까? 후자의 경우 훨씬 더 큰 테스트 사례가 제공되어야합니다.
—
Joel
권장 테스트 사례 :
—
Hiatsu
[8, 8, 8, 5, 1]
->[[8, 8], [8, 5, 1]]
또는 더 나은 :
—
히 아츠
[8, 5, 8, 8, 1, 2]
->[[8, 8], [8, 5, 2, 1]]
@Arnauld, 그렇지 않으면 흥미롭지 않은 정렬 코드가 답변에 추가되므로 yes 라고 말하면 입력을 정렬 된 순서로 취할 수 있습니다.
—
Beefster