프로그래머스 (JS)/Lv. 1

[Programmers / JS] 12918번 - 문자열 다루기

hodo- 2023. 3. 16. 13:57

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하도록 만들어줬음