두 개의 숫자 시작과 끝이 있다고 가정하고 [start, end] 범위의 모든 숫자 e가 포함되고 e의 숫자가 연속적으로 증가하도록 정렬된 정수 목록을 찾아야 합니다. 지속적으로 증가하는 숫자의 예는 5678이지만 169는 그렇지 않습니다.
따라서 입력이 start =10 end =150과 같으면 출력은 [12, 23, 34, 45, 56, 67, 78, 89, 123]
이 됩니다.이 문제를 해결하기 위해 다음 단계를 따릅니다. −
- s :=문자열 "123456789"로 9자리 모두
- a :=새 목록
- 0에서 8 사이의 i에 대해 다음을 수행합니다.
- i + 1에서 9 사이의 j에 대해 다음을 수행합니다.
- x :=(인덱스 i에서 j-1까지 s의 부분 문자열) 숫자로
- 시작 <=x <=끝이면
- x 삽입
- i + 1에서 9 사이의 j에 대해 다음을 수행합니다.
- 목록을 정렬하고 반환
예
이해를 돕기 위해 다음 구현을 살펴보겠습니다. −
def solve(start, end): s = "123456789" a = [] for i in range(9): for j in range(i + 1, 10): x = int(s[i:j]) if start <= x <= end: a += (x,) return sorted(a) start = 10 end = 150 print(solve(start, end))를 반환합니다.
입력
10, 150
출력
[12, 23, 34, 45, 56, 67, 78, 89, 123]