프로그래머스 Lv1
문자열 s의 길이가 4 혹은 6이고, 숫자로만 구성돼있는지 확인해주는 함수, solution을 완성하세요. 예를 들어 s가 "a234"이면 False를 리턴하고 "1234"라면 True를 리턴하면 됩니다.
s는 길이 1 이상, 길이 8 이하인 문자열입니다.
s | return |
---|---|
"a234" | false |
"1234" | true |
function solution(s) { for(let i = 0; i < s.length; i++){ let stringToInt = s.charAt(i)*1; if(isNaN(stringToInt)){ return false; } } return true; }
문제점 1
: 문제를 흘려서 봄
문제가...."문자열 s의 길이가 4 혹은 6이고, 숫자로만 구성돼있는지 확인해주는 함수"
조건 하나도 그냥 보지 말자...!! 4,6을 구별해주는 기능을 넣지 않았다.
문제점 2
: 인자들어오는 s자체를 검사해도 되는데 왜 굳이 for문을 돌렸을까?
또 필요없는 연산을 함.
function solution(s) {
if((s.length === 4 || s.length === 6 ) && !isNaN(s)){
return true;
}
return false;
}
!??!??!?! 왜지!??!
위처럼 풀었는데 테스트 케이스 11번 걸렸습니다.
아마 소수점 표현 "0.01" 이나 "1e22" 같은 지수 표현이 문제가 생긴다고 함.
출처 | [프로그래머스]문자열 다루기 기본
function solution(s) {
if( s.length === 4 || s.length === 6){
return s.split("").every((char)=>!isNaN(char))
}
return false;
}
arr.every( callback [, thisArg] )
매개변수
callback
각 요소를 시험할 함수. 다음 세 가지 인수를 받습니다.
반환 값
✅ callback이 모든 배열 요소에 대해 참(truthy)인 값을 반환하는 경우 true, 그 외엔 false.
다른 풀이에는 정규표현식을 써서 푼 코드가 많았다! 정규표현식도 꼭 3월안에 공부를 해야겠다!