문제 설명
문자열 s의 길이가 4 혹은 6이고, 숫자로만 구성돼있는지 확인해주는 함수, solution을 완성하세요. 예를 들어 s가 "a234"이면 False를 리턴하고 "1234"라면 True를 리턴하면 됩니다.
제한사항
s는 길이 1 이상, 길이 8 이하인 문자열입니다.
s는 영문 알파벳 대소문자 또는 0부터 9까지 숫자로 이루어져 있습니다.
입출력 예
s | return |
---|---|
"a234" | false |
"1234" | true |
나의 풀이
function solution(s) {
if (s.length !== 4 && s.length !== 6) {
return false;
}
return +s === 0 || +s ? true : false;
}
문자열s
가 숫자인치 판별하기 위해 +s
를 사용하였지만, 테스트 케이스를 통과하지 못하기에 찾아보니 "3e10"
같이 문자가 포함되어도 숫자로 인식되는 상황이 있기 때문이였다.
참고 풀이
function solution(s) {
return /^\d{4}$|^\d{6}$/.test(s);
}
정규식을 사용하면 풀 수 있다.
function solution(s) {
if (s.length !== 4 && s.length !== 6) {
return false;
}
for (let i = 0; i < s.length; i++) {
if (s[i] < '0' || s[i] > '9') {
return false;
}
}
return true;
}
문자열끼리의 부등호의 비교는 아스키코드 값으로 비교하기에 정규식을 사용하지 않고도 풀 수 있다.