Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

Python에서 단일 요소로 만들기 위해 왼쪽 또는 오른쪽에서 목록 요소를 짜내는 프로그램

<시간/>

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 끝에 숫자 삽입
  • 반환

이해를 돕기 위해 다음 구현을 살펴보겠습니다. −

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]]