You are given a string s consisting of lowercase English letters, and an integer k.
First, 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). Then, transform the integer by replacing it with the sum of its digits. Repeat the transform operation k times in total.
For example, if s = "zbax" and k = 2, then the resulting integer would be 8 by the following operations:
- Convert: "zbax" ➝ "(26)(2)(1)(24)" ➝ "262124" ➝ 262124
- Transform #1: 262124 ➝ 2 + 6 + 2 + 1 + 2 + 4 ➝ 17
- 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
Constraints:
- 1 <= s.length <= 100
- 1 <= k <= 10
- s consists of lowercase English letters.
int / char / string 사이에서 어떻게 유기적으로 움직일 수 있는지? 를 보는 문제다
1. C++
class Solution {
public:
int getLucky(string s, int k) {
string num = "";
for(char c : s){
num += to_string(c-'a'+1);
}
while(k>0){
int temp = 0;
for(char ch : num){
temp += ch - '0';
}
k--;
num = to_string(temp);
}
return stoi(num);
}
};
2. Python
class Solution:
def getLucky(self, s: str, k: int) -> int:
num = ""
for i in range(len(s)):
num += str(ord(s[i])-ord('a')+1)
while k != 0 :
temp = 0
for j in range(len(num)):
temp += int(num[j])
k-=1
num = str(temp)
return int(num)
ord 함수로 char의 unicode를 나타낸다.