소문자로 이루어진 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을 해보니
정답이었다!