두 개의 값 n과 k가 있다고 가정합니다. 길이가 n이고 숫자 값이 k인 사전식에서 가장 작은 문자열을 찾아야 합니다. 소문자의 숫자 값은 알파벳에서 해당 위치(1부터 시작)이므로 문자 'a'의 숫자 값은 1, 문자 'b'의 숫자 값은 2 등입니다. 그리고 소문자로 구성된 문자열의 숫자 값은 해당 문자의 숫자 값의 합입니다.
따라서 입력이 n =4 k =16과 같으면 출력은 "aaam"이 됩니다. 여기서 숫자 값은 1+1+1+13 =16이고 이것은 값과 길이가 다음과 같은 가장 작은 문자열입니다. 4.
이 문제를 해결하기 위해 다음 단계를 따릅니다. −
- 문자열 :=빈 문자열
- n> 0이 0이 아닌 동안 do
- 문자:=최소 26 및 k-n+1
- string :=string은 알파벳 위치 값 문자에서 해당 문자를 연결합니다.
- k :=k - 문자
- n :=n - 1
- 문자열을 뒤집고 반환
예
이해를 돕기 위해 다음 구현을 살펴보겠습니다. −
def solve(n, k): string = "" while n > 0: letter = min(26, k-n+1) string += chr(letter + ord('a') - 1) k -= letter n -= 1 return string[::-1] n = 4 k = 16 print(solve(n, k))
입력
4, 16
출력
aaam