반응형
[풀이]
function solution(s) {
return (s.length === 4 || s.length === 6) && s == parseInt(s);
}
문제 그대로 풀어주면 된다.
근데 이때 s === parseInt(s); 를 했을 때는 테스트를 통과하지 못한다.
=== 를 쓰는 것이 권장사항인데 아마 === 가 == 보다 더 엄격하기 때문에 통과를 못하는 것 같기도 하다.
[코드 리뷰]
const a = 1;
const b = '1';
console.log(a == b); // true
console.log(a === b); // false
위에서 보듯이 == (동등 연산자)보다 === (일치 연산자)가 더 엄격하게 "타입" 체크를 해준다.
코딩테스트라는 특수한 경우긴 하지만 일반적으로 개발할 때 == 는 지양한다.
=== 을 위주로 사용하는 것이 좋다.
이유 : == (동등 연산자) 는 타입까지 체크를 안하기 때문에 위 예제처럼 의도치 않은 결과가 발생할 확률이 높다.
[추가 코드]
function solution(s) {
const convertedArr = Array.from(s);
const result = convertedArr.filter((v) => isNaN(Number(v)));
if (s.length === 4 || s.length === 6) {
return result.length > 0 ? false : true
}
return false;
}
Array.from(s) 를 하면 배열안에 s 를 쪼개서 담아준다.
예시) s = "a123" 일 때,
Array.from(s) 는 ['a', '1', '2', '3'] 이 된다.
이때 result 변수에 배열을 filter 함수를 이용해 숫자가 아닌 것을 받아낸다.
const result = convertedArr.filter((v) => isNaN(Number(v))); 에서
result 값은 ['a'] 가 나오게 된다.
if문에서 s의 길이가 4이거나 6일 때,
result 배열의 길이가 0보다 크면 = 즉, 숫자가 아닌 문자열이 담겨있으면 false 리턴
그렇지 않으면 = 숫자만 있다라는 뜻. true 리턴
'코딩 테스트 > Programmers - 1' 카테고리의 다른 글
[JS] 2016년 (0) | 2022.09.24 |
---|---|
[JS] 짝수와 홀수 (0) | 2022.09.24 |
[JS] 음양 더하기 (1) | 2022.09.23 |
[JS] 제일 작은수 제거하기 (0) | 2022.09.22 |
[JS] 핸드폰 번호 가리기 (1) | 2022.09.22 |