래원

[LeetCode] 1945. Sum of Digits of String After Convert (Python) 본문

알고리즘/LeetCode

[LeetCode] 1945. Sum of Digits of String After Convert (Python)

Laewon Jeong 2024. 12. 14. 18:07

 

난이도: Easy

 

문제 설명


You are given a string s consisting of lowercase English letters, and an integer k. Your task is to convert the string into an integer by a special process, and then transform it by summing its digits repeatedly k times. More specifically, perform the following steps:

  1. Convert s into an integer by replacing each letter with its position in the alphabet (i.e. replace 'a' with 1, 'b' with 2, ..., 'z' with 26).
  2. Transform the integer by replacing it with the sum of its digits.
  3. Repeat the transform operation (step 2) k times in total.

For example, if s = "zbax" and k = 2, then the resulting integer would be 8 by the following operations:

  1. Convert: "zbax" ➝ "(26)(2)(1)(24)" ➝ "262124" ➝ 262124
  2. Transform #1: 262124 ➝ 2 + 6 + 2 + 1 + 2 + 4 ➝ 17
  3. Transform #2: 17 ➝ 1 + 7 ➝ 8

Return the resulting integer after performing the operations described above.

 

문제 예제


Example 1:

Input: s = "iiii", k = 1

Output: 36

Explanation:

The operations are as follows:
- Convert: "iiii" ➝ "(9)(9)(9)(9)" ➝ "9999" ➝ 9999
- Transform #1: 9999 ➝ 9 + 9 + 9 + 9 ➝ 36
Thus the resulting integer is 36.

Example 2:

Input: s = "leetcode", k = 2

Output: 6

Explanation:

The operations are as follows:
- Convert: "leetcode" ➝ "(12)(5)(5)(20)(3)(15)(4)(5)" ➝ "12552031545" ➝ 12552031545
- Transform #1: 12552031545 ➝ 1 + 2 + 5 + 5 + 2 + 0 + 3 + 1 + 5 + 4 + 5 ➝ 33
- Transform #2: 33 ➝ 3 + 3 ➝ 6
Thus the resulting integer is 6.

Example 3:

Input: s = "zbax", k = 2

Output: 8

 

제한 사항


  • 1 <= s.length <= 100
  • 1 <= k <= 10
  • s consists of lowercase English letters.

 

✏️ Solution(솔루션)


class Solution:
    def getLucky(self, s: str, k: int) -> int:
        answer = 0

        for alpha in s:
            answer += (ord(alpha)-96)//10 + (ord(alpha)-96)%10

        k-=1
        while k!=0:
            temp = list((str(answer)))
            answer = 0
            for num in temp:
                answer += int(num)
            k-=1
        
        return answer

 

일단 s의 알파벳들을 ord함수를 통해 숫자로 바꾸고 //10 연산과 % 10연산을 사용해 첫번째 Transform 결과를 얻었다.

 

그 후에는 남은 k번 동안 answer를 리스트화 시키고 (ex. 17 => ['1', '7']) 이 리스트의 요소를 int화 시켜 answer에 더해 주었다.

 

그리고 answer를 return 하여 정답을 맞추었다.

 


1945. Sum of Digits of String After Convert