[LeetCode] Sum of Digits of String After Convert

준규·2022년 8월 28일
0

소문자로 이루어진 s와 숫자 k가 주어진다고 한다

우선 s를 a=1, b=2,... z=26으로 철자를 숫자로 바꾼다

그런다음 k번만큼 위에서 바꾼 숫자열을 각 자릿수끼리 더해야한다

Example을 보면

첫번째 예시를 보면 iiii 문자열을 우선 숫자열로 바꿔야한다

i = 9이므로 iiii => 9999로 바뀌게 되고

여기서 k = 1 이므로 자릿수 덧셈을 한번 수행하면 된다

그러면 그 결과 9+9+9+9 = 36이고 36을 리턴하면 되는 문제이다

const getLucky = function(s, k) {
    let convert = ""
    for(char of s) {
        convert+= char.charCodeAt(0)-96;
    }
    
    for(let i = 0; i < k; i++){
        let result = 0;
        for(char of String(convert)) {
            
            result+=parseInt(char);
        }
        convert = result
        
    }
    return convert;
};

우선 처음의 영문자를 숫자로 바꾸기 위해 아스키코드를 이용하였다

소문자 a 는 97이고 b,c,d ... 갈 수록 1씩 늘어난다

문제의 조건은 a=1이므로 아스키 코드로 변환한다음 96을 빼주면 문제의 조건에 맞게 영어 문자를 숫자로 바꿀수 있고 바꾼 값을 convert에 할당해주었다

그 후 변환한 숫자열의 자릿수 덧셈을 k회 반복 해야하므로 반복문으로 k번 수행을 하는데

result 라는 임시 변수에 현재 convert의 자릿수 합을 할당해주고

내부 for문이 끝나면 현재의 convert 값을 result 값으로 변경해준다

그 후 외부 for문이 끝나면 convert를 리턴해주었다

submit을 해보니

정답이었다!

profile
안녕하세요 :)

0개의 댓글