그룹이라고 하는 하나의 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