양수 값을 가진 배열 num이 있다고 가정하고 k번 이상 반복되는 길이 m의 패턴을 찾아야 합니다. 여기서 패턴은 하나 이상의 값으로 구성되고 여러 번 반복되는 비중첩 하위 배열(연속)입니다. 패턴은 길이와 반복 횟수로 정의됩니다. k번 이상 반복되는 길이가 m인 패턴이 있는지 확인해야 합니다.
따라서 입력이 nums =[3,5,1,4,3,1,4,3,1,4,3,9,6,1], m =3, k =2인 경우 출력은 3번 나타나는 패턴 [1,4,3]이 있기 때문에 True일 것입니다.
이 문제를 해결하기 위해 다음 단계를 따릅니다. −
-
범위 0에서 숫자 - 1까지의 i에 대해 수행
-
sub1 :=인덱스 i부터 (i+m*k)까지의 하위 배열 - 1
-
sub2 :=인덱스 i에서 (i+m-1)까지의 k 연속 하위 배열
-
sub1이 sub2와 같으면
-
참을 반환
-
-
-
거짓을 반환
예제(파이썬)
이해를 돕기 위해 다음 구현을 살펴보겠습니다. −
def solve(nums, m, k): for i in range(len(nums)): sub1 = nums[i:i+m*k] sub2 = nums[i:i+m]*k if sub1 == sub2: return True return False nums = [3,5,1,4,3,1,4,3,1,4,3,9,6,1] m = 3 k = 2 print(solve(nums, m, k))
입력
[3,5,1,4,3,1,4,3,1,4,3,9,6,1], 3, 2
출력
True