문자열 s의 길이가 4 혹은 6이고, 숫자로만 구성돼있는지 확인해주는 함수, solution을 완성하세요. 예를 들어 s가 a234이면 false를 리턴하고 1234라면 true를 리턴하면 됩니다.
s는 길이 1 이상, 길이 8 이하인 문자열입니다.
문자열 s
의 길이가 4 혹은 6을 만족하는지 체크하고, 조건이 true일 때 문자열의 값이 모두 숫자인지만 판별해주면 된다. every()
메서드에서 문자열 0
이 포함되어 있는 경우만 주의해서 해결했다.
문자열 s
에 대해서 문제에 주어진 길이 조건(4 혹은 6)과 오직 숫자로만(1, 2, 3, 4, 5, 6, 7, 8, 9, 0) 이루어져 있는지만 확인했다. 문자열 s
가 음수('-100'), 진수법('0x10'), 부동소수점('1.11'), 지수표기법('1e20') 등 이러한 표기 방식일 경우라고 해도 문제와는 해당사항이 없다고 생각해서 조건문으로 제한을 두지 않았다. 즉, '-', '.', 'x', 'e' 등의 문자열
은 모두 오직 숫자
라는 조건에 맞지 않는다.
이것저것 검색하다가 isNaN()
과 Number.isNaN()
의 차이에 대해서 알게 되었다. 문제 풀이에 직접 적용하지는 않았지만 문자열이나 숫자와 관련된 알고리즘 문제풀이에서 알고 있으면 좋을 내용 같다고 생각해서 아래에 링크를 걸어두었다.
function solution(s) {
const len = s.length;
const answer =
len === 4 || len === 6
? [...s].every(str => +str >= 0)
: false;
return answer;
}
solution('0000'); // true
solution('1234'); // true
solution('-100'); // false
solution('1.11'); // false
solution('1e20'); // false
solution('qwerty'); // false
solution('123abc'); // false
solution('1234qwerty'); // false
MDN - Array.prototype.every()
MDN - isNaN()
MDN - Number.isNaN()
Number.isNaN()
Number.isNaN()
메서드는 ECMAScript 2015에서 추가되었다.isNaN()
메서드의 더 엄격한 버전으로 볼 수 있다.