Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

파이썬에서 주어진 숫자 값으로 가장 작은 문자열을 찾는 프로그램

<시간/>

두 개의 값 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