num이라는 숫자 목록이 있다고 가정하고 왼쪽과 오른쪽 모두에서 하나의 요소가 남을 때까지 압축해야 합니다. 각 단계에서 상태를 반환합니다.
따라서 입력이 nums =[10,20,30,40,50,60]과 같으면 출력은
[ [10, 20, 30, 40, 50, 60], [30, 30, 40, 110], [60, 150], [210] ]
이 문제를 해결하기 위해 다음 단계를 따릅니다. −
- ret :=요소 번호가 하나만 있는 목록
- 숫자 크기> 1, do
- 숫자의 크기가 2와 같으면
- nums :=요소로 목록 만들기 (nums[0] + nums[1])
- 그렇지 않고 숫자의 크기가 3과 같을 때
- nums :=요소로 목록 만들기 (nums[0] + nums[1] + nums[2])
- 그렇지 않으면
- nums :=요소(nums[0] + nums[1])로 목록을 만든 다음 인덱스 2에서 nums의 마지막 세 번째 요소까지 다른 목록을 삽입한 다음 요소(nums의 두 번째 마지막 요소 + 숫자의 마지막 요소)
- ret 끝에 숫자 삽입
- 숫자의 크기가 2와 같으면
- 반환
이해를 돕기 위해 다음 구현을 살펴보겠습니다. −
예
class Solution: def solve(self, nums): ret = [nums] while len(nums) > 1: if len(nums) == 2: nums = [nums[0] + nums[1]] elif len(nums) == 3: nums = [nums[0] + nums[1] + nums[2]] else: nums = [nums[0] + nums[1]] + nums[2:-2] + [nums[-2] + nums[-1]] ret.append(nums) return ret ob = Solution() print(ob.solve([10,20,30,40,50,60]))
입력
[10,20,30,40,50,60]
출력
[[10, 20, 30, 40, 50, 60], [30, 30, 40, 110], [60, 150], [210]]