문제 설명
- 문자열 s의 길이가 4 혹은 6이고, 숫자로만 구성돼있는지 확인해주는 함수, solution을 완성하세요.
- 예를 들어 s가 "a234"이면 False를 리턴하고 "1234"라면 True를 리턴하면 됩니다.
입력값 s의 구성 문자가 숫자로만 이루어져 있는지 파악하는 문제다!!
딱 보자마자 생각난 건 정규표현식 이었다 🙂
제한 사항
- s는 길이 1 이상, 길이 8 이하인 문자열입니다.
입출력 예
s return
"a234" false
"1234" true
어떻게 푸는게 좋을까?? 🙄
function solution(s) {
return (s.length === 4 || s.length === 6) && /^[0-9]+$/.test(s)
}
정규표현식을 이용한 풀이이다.
정규표현식에 쓰인 의미들을 간단히 살펴보자!! 😁
- 점검 하고자 하는 것 들 : /[0-9]/ /[a-z]/ /[A-Z]/ ...
- ^ : 정규 표현식 시작을 뜻함
- $ : 정규 표현식 끝을 뜻함
- + : 반복해서 체크해라라는 명령
test() 메서드
- 주어진 문자열이 정규 표현식을 만족하는지 판별하고, 그 여부를 true 또는 false로 반환합니다.
굉장히 유요한 메서드와 정규표현식에 대해 공부할 수 있었던 코드였다.
<많이 사용하는 정규표현식 궁금하지?????>
이게 Number()랑 parseInt() 가지고 노는 코드이다
좀 어려웠다 🤣
function solution(s) {
answer = (s.length === 4 || s.length === 6) && Number(s) === parseInt(s)
}
이 코드의 중요한 점은 NaN 이다.
문자가 포함된 String 값을 Number() / parseInt() 하게 되면, 모두 NaN을 반환한다.
그 떄 NaN은 특이하게 아래와 같이 리턴한다.
NaN === NaN // false
그렇기에 s 값에 문자가 포함된 String 값이 입력되면 && 후자의 코드에서 무조건 false 값이 반환되므로, 문자가 들어간 String을 구별해낼 수 있게 되는 것이다. ( ̄︶ ̄)↗