이진 문자열 str이 있다고 가정하고 문자열의 모든 1이 등거리인지 여부를 확인해야 합니다. 즉, 두 개의 1 사이의 거리는 동일합니다. 그리고 문자열에는 1이 두 개 이상 포함되어 있습니다.
따라서 입력이 s ="100001000010000"과 같으면 1이 서로 거리 4에 있으므로 출력은 True가 됩니다.
이 문제를 해결하기 위해 다음 단계를 따릅니다. −
- 색인 :=새 목록
- 0에서 s 크기의 범위에 있는 i에 대해 다음을 수행합니다.
- s[i]가 1과 같으면
- 색인 끝에 i 삽입
- s[i]가 1과 같으면
- t :=인덱스 크기
- 1 ~ t - 1 범위의 i에 대해 다음을 수행합니다.
- (index[i] - index[i - 1])이 (index[1] - index[0])과 같지 않으면
- 거짓을 반환
- (index[i] - index[i - 1])이 (index[1] - index[0])과 같지 않으면
- 참 반환
이해를 돕기 위해 다음 구현을 살펴보겠습니다. −
예
def solve(s): index = [] for i in range(len(s)): if s[i] == '1': index.append(i) t = len(index) for i in range(1, t): if (index[i] - index[i - 1]) != (index[1] - index[0]): return False return True s = "100001000010000" print(solve(s))
입력
"100001000010000"
출력
True