본문 바로가기

내용 복습/알고리즘

[JS] 프로그래머스 - 문자열 다루기 기본

문제 설명

문자열 s의 길이가 4 혹은 6이고, 숫자로만 구성돼있는지 확인해주는 함수, solution을 완성하세요. 예를 들어 s가 "a234"이면 False를 리턴하고 "1234"라면 True를 리턴하면 됩니다.

 

제한 사항

s는 길이 1 이상, 길이 8 이하인 문자열입니다.

 

해답

function solution(s) {

    if(s.length === 4 || s.length === 6){
        return s.split("").every(c => !isNaN(c)) // 모든 요소가 number이면 true리턴
    } else {
        return false;
    }
}

 

isNaN()은 is Not a Number이다. 매개변수가 숫자가 아닐경우는 true를 리턴하고, 숫자일 경우는 false를 리턴한다.

 

isNaN을 이용하여 풀었는데, MDN을 확인해보니 등호  연산자(==, ===)를 사용해 판별할 수 없다고 한다. NaN == NaN, NaN === NaN false로 평가되기 때문인데, 그냥 ()안에 대상값을 넣어서 boolean을 반환받는다.

 

 그리고 every에 넣어준 이유는 숫자에 e가 붙으면 문자인 경우도 숫자로 인식하여 각각 떼어내서 확인하는 것으로 문제를 해결하였다.