넘치게 채우기

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

PS/LeetCode

[LeetCode] 1945. Sum of Digits of String After Convert

riveroverflow 2024. 9. 3. 22:37
728x90
반응형

https://leetcode.com/problems/sum-of-digits-of-string-after-convert/description/?envType=daily-question&envId=2024-09-03

leetcode - Sum of Digits of String After Convert

문제 유형 : 문자열 처리, 구현

문제 난이도 : Easy

 

문제

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.

 

문자열 s와 정수 k가 주어진다.

우선, 알파벳을 숫자로 변환해라.

그리고 각 자릿수를 더하는 연산을 k번 수행하라.

 

그 결과를 정수로 반환하시오.

 

풀이

그대로 구현해주면 된다. 단, 문자열이 커져서 Long long에도 담기 힘들 수 있으니, 문자열 형태로 저장하자.

 

코드

C++

class Solution {
public:
    string convert(string s) {
        string num = "";
        for(char ch : s) {
            int x = ch - 'a' + 1;
            num += to_string(x);
        }

        return num;
    }

    int getLucky(string s, int k) {
        string converted = convert(s);
        for(int i = 0; i < k; i++) {
            long long ans = 0;
            for(char ch : converted) {
                ans += ch - '0';
            }
            converted = to_string(ans);
        }
        return stoi(converted);
    }
};
728x90
반응형