문자열 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
를 리턴하도록 했다.