변환 후 문자열의 자릿수 합계

1681 단어 theabbieleetcodedsa
영어 소문자로 구성된 문자열s과 정수k가 제공됩니다.

먼저 s를 각 문자를 알파벳의 해당 위치로 바꾸어 정수로 변환합니다(즉, 'a'1 , 'b'2 , ..., 'z'26로 바꿉니다. ). 그런 다음 정수를 숫자의 합으로 바꾸어 정수를 변환합니다. 총 변환 작업k을 반복합니다.

예를 들어 s = "zbax"k = 2 인 경우 결과 정수는 다음 연산에 의해 8가 됩니다.
  • 변환: "zbax" ➝ "(26)(2)(1)(24)" ➝ "262124" ➝ 262124
  • 변환 #1: 262124 ➝ 2 + 6 + 2 + 1 + 2 + 4 ➝ 17
  • 변환 #2: 17 ➝ 1 + 7 ➝ 8

  • 위에서 설명한 작업을 수행한 후 결과 정수를 반환합니다.

    예 1:

    입력: s = "iiii", k = 1
    출력: 36
    설명: 작업은 다음과 같습니다.
  • 변환: "iiii"➝ "(9)(9)(9)(9)"➝ "9999"➝ 9999
  • 변환 #1: 9999 ➝ 9 + 9 + 9 + 9 ➝ 36
    따라서 결과 정수는 36입니다.

  • 예 2:

    입력: s = "리트코드", k = 2
    출력: 6
    설명: 작업은 다음과 같습니다.
  • 변환: "leetcode"➝ "(12)(5)(5)(20)(3)(15)(4)(5)"➝ "12552031545"➝ 12552031545
  • 변환 #1: 12552031545 ➝ 1 + 2 + 5 + 5 + 2 + 0 + 3 + 1 + 5 + 4 + 5 ➝ 33
  • 변환 #2: 33 ➝ 3 + 3 ➝ 6
    따라서 결과 정수는 6입니다.

  • 예 3:

    입력: s = "zbax", k = 2
    출력: 8

    제약:
  • 1 <= s.length <= 100
  • 1 <= k <= 10
  • s 영문 소문자로 구성되어 있습니다.

  • 해결책:

    class Solution:
        def getLucky(self, s: str, k: int) -> int:
            op = ""
            for c in s:
                op += str(ord(c) - ord('a') + 1)
            for i in range(k):
                op = str(sum([int(d) for d in op]))
            return int(op)
    

    좋은 웹페이지 즐겨찾기