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

Python에서 다른 배열의 하위 배열을 연결하여 배열을 생성하는 프로그램

<시간/>

그룹이라고 하는 하나의 2D 배열과 다른 배열 num이 있다고 가정합니다. i번째 하위 배열이 groups[i](0-인덱싱됨)와 같도록 배열 번호에서 n개의 분리된 하위 배열을 선택할 수 있는지 확인해야 합니다. i> 0이면 (i-1)번째 하위 배열이 앞에 나타날 것입니다. i번째 부분배열(숫자)

따라서 입력이 group =[[2,-2,-2],[4,-3,0]] nums =[1,-1,0,2,-2,-2,4,-와 같은 경우 3,0], 배열 group[0]이 nums의 인덱스 3에서 5까지이고 group[1]이 nums에서 인덱스 6에서 8까지이기 때문에 출력은 true가 됩니다.

이 문제를 해결하기 위해 다음 단계를 따릅니다. −

  • 나는 :=0

  • 그룹의 각 그룹에 대해 수행

    • 범위 i의 j에 대해 숫자 크기 - 1, 수행

      • 숫자의 하위 배열[인덱스 j에서 j+ grp 크기까지]가 grp와 같으면

        • i :=j + grp의 크기

        • 루프에서 나오다

      • 그렇지 않으면

        • 거짓을 반환

  • 참을 반환

예시

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

def solve(groups, nums):
   i = 0
   for grp in groups:
      for j in range(i, len(nums)):
         if nums[j:j+len(grp)] == grp:
            i = j + len(grp)
            break
      else:
         return False
   return True

groups = [[2,-2,-2],[4,-3,0]]
nums = [1,-1,0,2,-2,-2,4,-3,0]
print(solve(groups, nums))

입력

[[2,-2,-2],[4,-3,0]], [1,-1,0,2,-2,-2,4,-3,0]

출력

True