프로그래머스 문제 중 '문자열 다루기 기본' 문제가 11번 케이스만 통과되지 않는 상황이 생겼다...
질문하기를 보니 11번 케이스에 대한 질문 몇개가 있었고 11번 케이스에 'e'가 들어간다는 것을 알 수 있었다..!
자바스크립트에서는 지수를 나타낼 때 e를 붙여 사용하는데, e 뒤에 오는 수만큼 10을 곱한다는 뜻이다.
e를 문자가 아닌 지수로 인식하여 숫자로 인식을 해버린다.
const number1 = 1.234e3; // 1.234 곱하기 10의 3제곱
console.log(number); // 1234
const number2 = 3e5; // 3 곱하기 10의 5제곱
console.log(number2) // 300000
const number3 = 123.4e-3; // -를 사용할 수 있음
console.log(number3) // 1.234
// 문자열 s의 길이가 4 혹은 6이고, 숫자로만 구성돼있는지 확인해주는 함수, solution을 완성하세요.
// 예를 들어 s가 "a234"이면 False를 리턴하고 "1234"라면 True를 리턴하면 됩니다.
// 11번 케이스를 통과하지 못했던 문제 풀이
// 매개변수 s가 NaN값 인지에 따라 구분하려 했으나 'e'가 들어갔을 경우 숫자로 인식하게 됨
function solution(s) {
return (s.length === 4 || s.length === 6) && !isNaN(s)
}
// 이후 문제 풀이
// 매개변수 s의 요소 하나하나를 NaN인지 판단하는 코드로 수정
function solution(s) {
return (s.length === 4 || s.length === 6) && s.split('').every(el => !isNaN(el))
}