
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 반환