문제
You are given a string s formed by digits and '#'. We want to map s to English lowercase characters as follows:
- Characters ('a' to 'i') are represented by ('1' to '9') respectively.
- Characters ('j' to 'z') are represented by ('10#' to '26#') respectively.
Return the string formed after mapping.
The test cases are generated so that a unique mapping will always exist.
s숫자 및 '#'로 구성된 문자열이 제공 됩니다. s다음과 같이 영어 소문자에 매핑하려고 합니다.
- 문자( 'a'to ) 'i')는 각각 ( '1'to '9')로 표시됩니다.
- 문자( 'j'to ) 'z')는 각각 ( '10#'to '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"
제약 조건
Constraints:
- 1 <= s.length <= 1000
- s consists of digits and the '#' letter.
- s will be a valid string such that mapping is always possible.
해결 과정
처음에 계속 console.log로 찍어도 undefined가 떠서 왜그러지? 했었는데 return을 해주니까 답이 나왔다. 이건 무슨 경우이지...😅
- 매핑을 해줄 map 변수를 초기화한다.
- 반환할 result 문자열 변수와, while문을 돌 때 사용할 count 변수도 초기화한다.
- while문을 돈다. 이때 count가 s.length와 같거나 커지면 빠져나온다.
- 만약 s[count+2]의 값이 '#'라면, 현재의 수는 00# 처리를 해주어야 한다.
- 00#을 찾고, map에서 그 값을 찾아 매핑해준다.
- 만약 s[count+2]의 값이 '#'가 아니라면, 현재의 수는 0 처리를 해주어야 한다.
- 현재의 수를 map에서 찾아 매핑해준다.
- 다음 인덱스를 탐색할 수 있도록 count++ 해준다.
- 만약 s[count+2]의 값이 '#'라면, 현재의 수는 00# 처리를 해주어야 한다.
- while문을 빠져나오면 result 값을 반환한다.
해결 코드
/**
* @param {string} s
* @return {string}
*/
var freqAlphabets = function(s) {
let map = {
"1" : "a",
"2" : "b",
"3" : "c",
"4" : "d",
"5" : "e",
"6" : "f",
"7" : "g",
"8" : "h",
"9" : "i",
"10#" : "j",
"11#" : "k",
"12#" : "l",
"13#" : "m",
"14#" : "n",
"15#" : "o",
"16#" : "p",
"17#" : "q",
"18#" : "r",
"19#" : "s",
"20#" : "t",
"21#" : "u",
"22#" : "v",
"23#" : "w",
"24#" : "x",
"25#" : "y",
"26#" : "z"
}
let result = "";
let count = 0;
while(count < s.length){
if(s[count+2] == '#') {
result += map[s[count] + s[count + 1] +s[count + 2]];
count += 2;
} else {
result += map[s[count]];
}
count++;
}
return result;
};
'leetCode' 카테고리의 다른 글
[Easy] 1678. Goal Parser Interpretation (0) | 2022.06.02 |
---|---|
[Easy] 953. Verifying an Alien Dictionary (4) | 2022.06.02 |
[Easy] 709. To Lower Case (0) | 2022.06.02 |
[Easy] 1768. Merge Strings Alternately (0) | 2022.06.02 |
[Easy] 1672. Richest Customer Wealth (0) | 2022.05.31 |
Comment