문제 설명
문자열 s의 길이가 4 혹은 6이고, 숫자로만 구성돼있는지 확인해주는 함수, solution을 완성하세요. 예를 들어 s가 "a234"이면 False를 리턴하고 "1234"라면 True를 리턴하면 됩니다.
제한 사항- s는 길이 1 이상, 길이 8 이하인 문자열입니다.
- s는 영문 알파벳 대소문자 또는 0부터 9까지 숫자로 이루어져 있습니다.
"a234" | false |
"1234" | true |
내가 풀어본 방법
function solution(s) {
var answer;
if(s.length === 4 || s.length === 6){
//숫자 아닐떄
if(isNaN(s)){
answer = false;
} // 숫자일떄
else {
answer = true;
}
}
//s 길이가 4, 6이 아닐때
else {
answer = false;
}
return answer;
}
이렇게 풀었다.. ! 하지만 11번 케이스에서 계속 오답이 나와서 결국 구글링 해보고 문제를 찾았다 문제는
이유는 js에서 숫자에 e가 붙으면 지수로 인식하여 문자를 숫자로 인식하기 때문
현동님에 도움으로 이렇게 해서 코드를 풀었다
정답 코드
function solution(s) {
// 숫자에 e가 들어가면 무조건 false로 반환하게
for(let i =0; i<s.length; i++){
if(isNaN(Number(s[i])) == true){
return false;
}
}
// s 길이가 4, 6 이면 true 반환
if(s.length === 4 || s.length ===6){
return true;
}
// s 길이가 4, 6 아니면 false 반환
else return false;
}
'알고리즘' 카테고리의 다른 글
[프로그래머스]수박수박수박수박수박수? (1) | 2023.01.28 |
---|---|
[프로그래머스]완주하지 못한 선수 (0) | 2023.01.28 |
[프로그래머스]x만큼 간격이 있는 n개의 숫자 (0) | 2023.01.27 |
[프로그래머스]두 정수 사이의 합 (0) | 2023.01.27 |
[프로그래머스]없는 숫자 더하기 (0) | 2023.01.27 |