오늘 여러 문제를 풀었는데 그중 제일 기억에 남는 문제는 이문제 였다.
// 문제 설명
// 문자열 s의 길이가 4 혹은 6이고, 숫자로만 구성돼있는지 확인해주는 함수, solution을 완성하세요. 예를 들어 s가 "a234"이면 False를 리턴하고 "1234"라면 True를 리턴하면 됩니다.
// 제한 사항
// s는 길이 1 이상, 길이 8 이하인 문자열입니다.
// s는 영문 알파벳 대소문자 또는 0부터 9까지 숫자로 이루어져 있습니다.
// 입출력 예
// s return
// "a234" false
// "1234" true
// 조건 : 길이가 4~6, 숫자로만 구성
isNaN()이 메서드를 사용해서 만들었다.
function solution(s) {
var answer;
if(s.length === 4 || s.length === 6){
if(isNaN(s)){
answer = false;
} else {
answer = true;
}
} else {
answer = false;
}
return answer;
}
이런식으로 만들었는데 통과가 안되는것이다..! 무엇이 문제인가 해서 구글링을 통해 알아보니... javascript는 숫자 사이에 e가 있으면 지수로 본다고한다.. 이런,,결국 고민고민끝에 완성을 했다..
solution("1e24")
function solution(s) {
if(s.length !== 4 || s.length !== 6) return false;
for (let i = 0; i < s.length; i++) {
if(isNaN(Number(s[i]))) return false;
}
return true;
}
문제점을 찾지못해 고생한 시간들이 너무 크다.. 그로인해 알게된것도 크다..!