문자열 다루기 기본[JS]

잡초·2023년 9월 14일
0
post-thumbnail

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

제한사항
s는 길이 1 이상, 길이 8 이하인 문자열입니다.
s는 영문 알파벳 대소문자 또는 0부터 9까지 숫자로 이루어져 있습니다.

입출력 예

sreturn
"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;
}

문자열끼리의 부등호의 비교는 아스키코드 값으로 비교하기에 정규식을 사용하지 않고도 풀 수 있다.

profile
개발자가 되고싶은 잡초

0개의 댓글