문제설명
문자열 s의 길이가 4 혹은 6이고, 숫자로만 구성 되어 있는 지 확인 해주는 함수
예를 들어 s가 a234이면 false를 리턴하고 1234이면 true를 리턴한다.
제한사항
- s는 길이 1 이상, 길이 8 이하인 문자열이다.
내가 푼 문제 풀이
function solution(s) {
let answer = true
for(let i=0; i<s.length; i++){
if(isNaN(s[i])==true){
answer = false
}
}
return answer
}
첫 시도로 풀었던 코드인데
테스트 케이스 5,6번에서 실패가 떴다
문자열 s의 길이가 4 또는 6인지 확인하는 구문을 넣지 않아서 오류가 난 것이라고 한다
2차 시도에서는 parseInt를 사용해서 비교를 했는 데 이 또한 실패가 떴다.
function solution(s) {
let answer = true
if(s.length == 4 || s.length == 6){
for(let i=0; i<s.length; i++){
if(s[i] != parseInt(s[i])){
// s[i] == parseInt(s[i])의 결과값이 true 또는 false로 반환됨
answer = false
}
}
}
return answer
}
결국 모르겠어서 다른 분들의 풀이를 보았다.
다른 사람이 푼 문제 풀이
function solution(s) {
return (s.length === 4 || s.length === 6) && s == parseInt(s)
}
일단 이 분은 s.length가 4 혹은 6인 숫자로만 구성 되어 있다는 조건 + s를 parseInt()를 사용하여 같은 지 비교하고 결과를 return 하셨다. 간단하게 잘 짜신 것 같다.
isNaN()을 사용하면 반환값이 true이거나 false이기 때문에 비교 할 수 없다.
https://habitual-history.tistory.com/3#recentComments
https://programmers.co.kr/learn/courses/30/lessons/12918
댓글