Problem
문자열 s의 길이가 4 혹은 6이고, 숫자로만 구성돼있는지 확인해주는 함수, solution을 완성하세요. 예를 들어 s가 "a234"이면 False를 리턴하고 "1234"라면 True를 리턴하면 됩니다.
제한 사항
- s는 길이 1 이상, 길이 8 이하인 문자열입니다.
- s는 영문 알파벳 대소문자 또는 0부터 9까지 숫자로 이루어져 있습니다.

Solution
function solution(s) {
return (s.length === 4 || s.length === 6) && !(s.split('').map(x => isNaN(x)).includes(true))? true : false;
}
각 조건에 맞는 결과를 return하기 위해
1) 문자열의 길이가 4 또는 6
s.length === 4 || s.length === 6
2) 숫자로만 구성될 시 true / 아니라면 false
처음에 단순히 isNaN(x)을 했는데 오류가 나서 힌트를 확인해보니 '3e10'과 같은 매개변수를 고려해야했다.
(isNaN('3e10')은 30000000000000 으로 숫자값이 나옴)
그래서 문자열을 배열로 만들어주고 각 요소마다 숫자인지 확인해준뒤에
숫자 -> false, 문자 -> true로 결과가 나오므로 includes로 배열에 true(문자)가 있는지 확인하였다.
문자가 있다면 true로 되므로 위에 내가 만든 조건은 숫자로만 구성될 경우이므로 NOT연산자(!)을 이용하여
true -> false 로 return하도록 만들어줬음
'프로그래머스 (JS) > Lv. 1' 카테고리의 다른 글
[Programmers / JS] 12906번 - 같은 숫자는 싫어 (0) | 2023.03.17 |
---|---|
[Programmers / JS] 12950번 - 행렬의 덧셈 (0) | 2023.03.16 |
[Programmers / JS] 77884번 - 약수의 개수와 덧셈 (0) | 2023.03.16 |
[Programmers / JS] 86051번 - 없는 숫자 더하기 (0) | 2023.03.15 |
[Programmers / JS] 12935번 - 제일 작은 수 제거하기 (0) | 2023.03.14 |