숫자 n이 있다고 가정합니다. 임의의 위치에 있는 문자가 바로 다음 문자보다 사전순으로 커야 하도록 길이가 n+1인 소문자 문자열을 확인해야 합니다.
따라서 입력이 15와 같으면 출력은 ponmlkjihgfedcba가 됩니다.
이 문제를 해결하기 위해 다음 단계를 따릅니다. −
- temp_str :=빈 문자열
- 추가:=n 모드 26
- 추가이면>=1이면
- 26 -(extra + 1) ~ 25 범위의 i에 대해
- temp_str :=temp_str + str[i]
- count :=n / 26(정수 나누기)
- 범위 1에 있는 i가 + 1을 계산하려면 다음을 수행합니다.
- 0에서 25 사이의 j에 대해 다음을 수행합니다.
- temp_str :=temp_str + str[j]
- 0에서 25 사이의 j에 대해 다음을 수행합니다.
- 26 -(extra + 1) ~ 25 범위의 i에 대해
- temp_str 반환
예시
이해를 돕기 위해 다음 구현을 살펴보겠습니다. −
def show_string(n, str): temp_str = "" extra = n % 26 if (extra >= 1) : for i in range( 26 - (extra + 1), 26): temp_str += str[i] count = n // 26 for i in range(1, count + 1) : for j in range(26): temp_str += str[j] return temp_str n = 15 str = "zyxwvutsrqponmlkjihgfedcba" print(show_string(n, str))
입력
15
출력
ponmlkjihgfedcba