책과 책장이 있습니다. 가능한 한 많은 책을 선반에 놓고 싶지만 규칙이 있습니다. 책의 모든 치수 (높이, 너비 및 깊이)는 선반에서 증가하지 않는 순서를 형성해야합니다.
이것은 모든 책이 최소한 자기 자신에 대한 책보다 높아야 함을 의미합니다. 너비와 깊이도 마찬가지입니다. 책을 회전하여 높이, 너비 및 깊이를 바꿀 수는 없습니다.
모든 책의 크기를 입력 출력으로 제공하거나 선반에 놓을 수있는 최대 책 수를 반환하는 프로그램이나 함수를 작성해야합니다.
입력
- 각 삼중 항이 책의 높이, 너비 및 깊이를 정의하는 양의 정수의 트리플렛 목록입니다.
- 입력 목록에 하나 이상의 삼중 항이 있습니다.
- 두 권의 책은 여러 치수에서 길이가 동일 할 수 있습니다.
산출
- 단일 양의 정수로, 규칙을 준수하는 선반에 맞는 최대 책 수입니다.
시간 복잡성
알고리즘은 장수에서 최악의 시간 복잡성 다항식을 가져야합니다 . 예를 들어 다음과 같은 시간 복잡성이 모두 유효 함을 의미합니다. O (N ^ 3), O (log (N) * N ^ 2), O (N) 및 다음 중 하나는 유효하지 않습니다. O (2 ^ N), O (N!), O (N ^ N).
예
입력 => 출력
(1, 1, 1) => 1
(5, 2, 5), (1, 3, 5) => 1
(5, 2, 5), (1, 2, 5) => 2
(2, 2, 2), (2, 2, 2), (2, 2, 2), (1, 3, 6) => 3
(1, 2, 5), (1, 3, 5), (1, 2, 8), (1, 2, 5), (7, 7, 7) => 4
(5, 19, 3), (9, 4, 16), (15, 16, 13), (7, 4, 16), (1, 13, 14), (20, 1, 15), (9, 8, 19), (4, 11, 1) => 3
(1, 1, 18), (1, 13, 7), (14, 1, 17), (8, 15, 16), (18, 8, 12), (8, 8, 15), (10, 1, 14), (18, 4, 6), (10, 4, 11), (17, 14, 17), (7, 10, 10), (19, 16, 17), (13, 19, 2), (16, 8, 13), (14, 6, 12), (18, 12, 3) => 5
이것은 코드 골프이므로 가장 짧은 참가작이 승리합니다.
관련된 흥미로운 책 정렬 도전 : Book Stack Sort .