Lv.0 영어가 싫어요
영어가 싫은 머쓱이는 영어로 표기되어있는 숫자를 수로 바꾸려고 합니다. 문자열
numbers
가 매개변수로 주어질 때,numbers
를 정수로 바꿔 return 하도록 solution 함수를 완성해 주세요.
제한사항
numbers
는 소문자로만 구성되어 있습니다.numbers
는 "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine" 들이 공백 없이 조합되어 있습니다.- 1 ≤
numbers
의 길이 ≤ 50- "zero"는
numbers
의 맨 앞에 올 수 없습니다.
function solution(numbers) {
var answer = numbers;
let stringNum = [
'zero', 'one', 'two', 'three', 'four',
'five', 'six', 'seven', 'eight', 'nine'
];
for(let i=0; i<stringNum.length; i++){
answer = answer.replaceAll(stringNum[i], i);
};
if(answer.charAt(0) == 0){
while(answer.charAt(0) != 0){
return answer.substring(1);
};
};
return parseInt(answer);
};
콘솔로 값을 출력해보면서 코드를 짜느라 맨앞에 0이 있는 경우를 생각하고 if문을 작성했다
그런데 결론적으로 parseInt()
를 통해 맨앞의 0들이 자동으로 삭제됐다
굳이 if문을 작성하지 않았어도 되었던..
function solution(numbers) {
const obj = {
zero: 0, one: 1, two: 2, three: 3, four: 4,
five: 5, six: 6, seven: 7, eight: 8, nine: 9
};
const num = numbers.replace(/zero|one|two|three|four|five|six|seven|eight|nine/g, (v) => {
return obj[v];
});
return Number(num);
}
다른분들의 풀이를 보니 Number()
로 변경을 하셨더라
Number()
와 parseInt()
는 문자열을 숫자로 형변환한다는 점에서 같지만 차이점이 있었다
Number()
NaN
반환parseInt()
NaN
반환