[Programmers] JavaScript 문자열 다루기 기본

Kim Joy·2023년 4월 5일
2

Programmers 장인

목록 보기
56/67
post-thumbnail
post-custom-banner

문자열 다루기 기본

문제 설명

문자열 s의 길이가 4 혹은 6이고, 숫자로만 구성돼있는지 확인해주는 함수, solution을 완성하세요. 예를 들어 s가 "a234"이면 False를 리턴하고 "1234"라면 True를 리턴하면 됩니다.

입출력 예

코드

function solution(s) {

    if(!isNaN(s)) {
        if((s.length == 4 || s.length ==6) && !(s.includes('e'))) {
            return true
        }
        else {
            return false
        }
    }
    else {
        return false
    }
    
}

테스트케이스 11번 실패시

https://school.programmers.co.kr/learn/courses/14743/lessons/118019

isNaN을 통해서 숫자인지 아닌지 판별을 하였는데, 프로그래밍 언어에서는 실수를 표기할 때 지수 표기법을 지원한다는것을 모르고 있었습니다.
그래서 5e3 은 5x1000 을 의미하는 숫자입니다.

하지만 이 문제에서는 e라는 문자열이 있으면 숫자로만 구성되어있는게 아니기 때문에,
e가 포함이 된다면 처리를 해주었습니다.

왜 Number()는 안될까?

isNaN()을 사용하기전에 Number()를 사용했는데요.
테스트케이스 18번, 19번에 오류가 생겼습니다.
Number()와 isNaN()의 차이점을 찾아보았습니다.

Number() 함수는 문자열을 숫자로 변환하는 함수입니다.
예를 들어, Number("123")은 123이라는 숫자를 반환합니다.
그러나, Number() 함수는 문자열이 숫자로만 구성되어 있지 않으면 NaN(Not a Number)을 반환합니다. 예를 들어, Number("abc3")는 NaN을 반환합니다.

반면에, isNaN() 함수는 인자로 전달된 값이 숫자가 아니면 true를 반환하고, 숫자이면 false를 반환합니다. 예를 들어, isNaN("abc")는 true를 반환하고, isNaN("123")은 false를 반환합니다.

테스트케이스 18번과 19번이 무엇인지 눈으로 확인 할 수는 없지만, 정확하게 하려면 isNaN()을 사용해야한다.

profile
코딩어린이 성장중
post-custom-banner

0개의 댓글