[TIL] 문자열다루기 기본

이현동·2023년 1월 27일
0

TIL

목록 보기
16/59
post-custom-banner

문제

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

제한사항

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

입출력 예

나의 코드

const solution = (s) => {
    for (let i = 0; i<s.length;i++){
        if (isNaN(Number(s[i])) === true){
            return false;
        }
    }
    if ((s.length === 4 || s.length === 6)) {
        return true;
    } else {
        return false;
    }   
}

처음에는 for문을 사용하지 않았다. 테스트 케이스는 모두 통과가 나왔지만 딱 하나 11번 케이스가 자꾸 오류가 났었다. 내가 쓴 조건들을 다시 확인해봐도 원인을 알 수 없었다. 너무 모르겠어서 질문방에 들어가봤는데 나와 같은 고민을 하는 사람이 많았던 것 같다. JS 11번 테스트 케이스가 안된다는 질문을 꽤 많이 봤었다.
결론으로 원인은 문자열이 "1e11" 이어서 였다. ^^...; "1e11"은 아래와 같다. 따라서 isNaN()을 사용했을 때, true가 나온 것이다..

따라서 해결은 받았던 s를 하나하나씩 비교해서 문자가 하나라도 있으면 false를 리턴하도록 했다.

profile
https://hdlee.dev
post-custom-banner

0개의 댓글