문제
숫자와 '#'으로 구성된 문자열 s가 제공됩니다. 다음과 같이 s를 영어 소문자에 매핑하려고 합니다.
문자('a' ~ 'i')는 각각 ('1' ~ '9')로 표시됩니다.
문자('j' ~ 'z')는 각각 ('10#' ~ '26#')로 표시됩니다.
매핑 후에 형성된 문자열을 반환합니다.고유한 매핑이 항상 존재하도록 테스트 케이스가 생성됩니다.
예시
Example 1:
Input: s = "10#11#12"
Output: "jkab"
Explanation: "j" -> "10#" , "k" -> "11#" , "a" -> "1" , "b" -> "2".Example 2:
Input: s = "1326#"
Output: "acz"
해당 문제는 임의로 지정한 숫자에 알파벳을 매칭시켜 지정한 숫자값들이 들어오면 알파벳으로 변경하는 코드를 작성하는 문제였다.
var freqAlphabets = function(s) {
let result = ''; // 정답을 넣을 빈 문자열 선언
//뒤에서 부터 순차 탐색
for(let i = s.length-1; i>=0 ; i--) {
// #을 만났을때 앞의 두문자열을 변환
if(s[i] === '#') {
result = String.fromCharCode(Number(`${s[i-2]}${s[i-1]}`)+96) + result;
i -= 2;
//이외 상황에서는 하나의 문자열만 변환
}else {
result = String.fromCharCode(Number(`${s[i]}`)+96) + result;
}
}
return result;
};
해당 문제는 아스키 코드 97번 부터 알파벳 소문자 a가 시작 되는데 해당 오른쪽 부터 문자열을 탐색해서 '#'이 나올땐 # 앞의 두문자열을 변환하고 #이 나오지 않은경우느 한자리씩 변환을 진행해서 뒤에서 부터 문자열을 채워주는 방식으로 문제를 풀었다.
백틱을 사용해서 간단하게 푸신것 같습니다!!!👍👍