문제 설명
문자열 s의 길이가 4 혹은 6이고, 숫자로만 구성돼있는지 확인해주는 함수, solution을 완성하세요. 예를 들어 s가 "a234"이면 False를 리턴하고 "1234"라면 True를 리턴하면 됩니다.
제한 사항
- s는 길이 1 이상, 길이 8 이하인 문자열입니다.
입출력 예
s | return |
"a234" | false |
"1234" | true |
내 풀이
틀린 풀이
function solution(s) {
return !isNaN(s) && (s.length == 4 || s.length == 6);
}
이 문제는 쉬운 문제라고 생각하고 풀었는데 테스트 케이스 11번에서 자꾸만 막혔다 ㅜㅠ
찾아보니 11번 테스트 케이스는 지수형태인데, isNaN 메서드는 지수형태 또한 숫자로 판별한다고 한다.
정답 풀이
function solution(s) {
let answer = true;
Array.from(s).forEach(e => {
if(isNaN(e)) answer = false;
});
if(!(s.length === 4 || s.length === 6)) answer = false;
return answer;
}
예를 들어 문자열 "2e3"이 파라미터 s의 값이라고 하자. "2", "e", "3" 하나하나에 대해 forEach문으로 돌려가면서 "e"처럼 숫자가 아닐 때 answer = false이고, 문자열의 길이가 4 또는 6이 아닐때 answer는 false가 되어서 answer를 리턴하도록 풀이 했다.
에러 해결
'forEach is not a function' 에러가 났었다. 문자열도 배열처럼 쓸 수 있으니 당연히 s.forEach 쓸 수 있겠다 생각 했는데 문자열은 유사배열이기 때문에 Array.from(s).forEach로 써야한다고 한다. 이 에러에 대해 따로 포스팅을 했다.
https://susu-tn.tistory.com/47
[javascript] forEach is not a function error
문제 자바스크립트에서 문자열에 대해 forEach문을 사용했는데 이 에러가 나면서 실행이 되지 않음. 원인 문자열은 배열이 아니기 때문에, 유사 배열이라 이런 오류가 생긴다고 한다. 유사 배열
susu-tn.tistory.com
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[lv.1] 문자열 내 p와 y의 개수 (0) | 2022.05.27 |
---|---|
[lv.1] 내적 (0) | 2022.05.27 |
[lv.1] 나누어 떨어지는 숫자 배열 (0) | 2022.05.24 |
[lv.1] 2016년 (0) | 2022.05.24 |
[lv.1] 부족한 금액 계산하기 (0) | 2022.05.17 |