🧬알고리즘/Programmers
[JavaScript] 숫자 문자열과 영단어 - 2021 카카오 채용연계형 인턴십
뉴발자
2024. 9. 11. 18:57
728x90
문제
네오와 프로도가 숫자놀이를 하고 있습니다.
네오가 프로도에게 숫자를 건넬 때 일부 자릿수를 영단어로 바꾼 카드를 건네주면 프로도는 원래 숫자를 찾는 게임입니다.
다음은 숫자의 일부 자릿수를 영단어로 바꾸는 예시입니다.
- 1478 → "one4seveneight"
- 234567 → "23four5six7"
- 10203 → "1zerotwozero3"
이렇게 숫자의 일부 자릿수가 영단어로 바뀌어졌거나, 혹은 바뀌지 않고 그대로인 문자열 s가 매개변수로 주어집니다.
s가 의미하는 원래 숫자를 return 하도록 solution 함수를 완성해주세요.
참고로 각 숫자에 대응되는 영단어는 다음 표와 같습니다.
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
"zero" | "one" | "two" | "three" | "four" | "five" | "six" | "seven" | "eight" | "nine" |
나의 풀이
function solution(s) {
s = s.replace(/zero/gi, "0")
.replace(/one/gi, "1")
.replace(/two/gi, "2")
.replace(/three/gi, "3")
.replace(/four/gi, "4")
.replace(/five/gi, "5")
.replace(/six/gi, "6")
.replace(/seven/gi, "7")
.replace(/eight/gi, "8")
.replace(/nine/gi, "9");
return +s;
}
다른 풀이
function solution(s) {
let numbers = ["zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"];
var answer = s;
for(let i=0; i< numbers.length; i++) {
let arr = answer.split(numbers[i]);
answer = arr.join(i);
}
return Number(answer);
}
풀이 방법
나의 풀이 방법
1. 정규식과 replace() 함수를 사용해서 문자열 s안의 영문으로 표현된 숫자들을 숫자로 바꿔준 뒤 Number 타입으로 변환했다.
function solution(s) {
// 정규식과 replace() 함수를 사용하여 영문 숫자를 숫자로 변환
s = s.replace(/zero/gi, "0")
.replace(/one/gi, "1")
.replace(/two/gi, "2")
.replace(/three/gi, "3")
.replace(/four/gi, "4")
.replace(/five/gi, "5")
.replace(/six/gi, "6")
.replace(/seven/gi, "7")
.replace(/eight/gi, "8")
.replace(/nine/gi, "9");
// Number 타입으로 변환
return +s;
}
다른 풀이 방법
1. 0부터 9까지의 숫자를 영문으로 작성한 단어들을 배열에 넣어주고 문자열 s를 answer 변수에 복사한다.
function solution(s) {
// 1
let numbers = ["zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"];
var answer = s;
}
2. for()문을 사용해 numbers 배열만큼 반복해준다.
function solution(s) {
// 1
let numbers = ["zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"];
var answer = s;
// 2
for(let i=0; i< numbers.length; i++) {
...
}
}
3. split() 함수를 사용해 numbers[i]와 일치하는 문자를 찾아 string 배열로 만들어준다.
function solution(s) {
// 1
let numbers = ["zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"];
var answer = s;
// 2
for(let i=0; i< numbers.length; i++) {
// 3
let arr = answer.split(numbers[i]);
}
}
4. join() 함수를 사용해서 split() 으로 자른 두 문자열 사이에 i 값을 넣어서 다시 문자열로 만들어준다.
function solution(s) {
// 1
let numbers = ["zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"];
var answer = s;
// 2
for(let i=0; i< numbers.length; i++) {
// 3
let arr = answer.split(numbers[i]);
// 4
answer = arr.join(i);
}
return Number(answer);
}
728x90