var freqAlphabets = function(s) {
let result = ''
for(let i=0; i<s.length;) {
if(s[i+2] === '#') {
result += String.fromCharCode(+(s[i] + s[i+1]) + 96)
i+=3
} else {
result += String.fromCharCode(+s[i] + 96)
i++
}
}
return result
};
이 문제를 해결하기 위한 가장 중요한 포인트는
1~9
와10#~26#
을 구분하는 것이다.
한 자리 수인지 아니면 세 자리 수인지를 구별할 수 있어야한다.
구별하기 위해서현재 인덱스 + 2
의 값이 #인지 아닌지 확인해야한다.
#일 경우, 세 자리 수이므로 현재 인덱스와 다음 인덱스의 값의 합에 96를 더하고fromCharCode
메소드를 이용해서 알파벳으로 변환한다.
여기서 주의할 점은 변환 후 세 자리 수를 변환한 것이기 때문에 포인터(i
)를 +3 시켜줘야한다.
#이 아닐 경우는 간단하게 현재 인덱스의 값에 96를 더해서 변환해 주면 된다.