프로그래머스 알고리즘

윱니·2023년 12월 15일

문자열 다루기 기본

  • 나의 풀이
function solution(s) {
    return Number(s) === parseInt(s) && (s.length === 4 || s.length === 6)
}

=> Number()와 parseInt()의 차이!

예제 1. '102022'

Number('102022')    // 102022
parseInt('102022')  // 102022

예제 2. '10기'

Number('10기')    //  NaN
parseInt('10기')  //  10

예제 3. '프론트 10기'

Number('프론트 10기')    //  NaN
parseInt('프론트 10기')  //  NaN

예제 4. '3.145896', '3.145896점'

Number('3.145896')    //  3.145896
Number('3.145896점')    //  NaN
parseInt('3.145896')  //  3
parseInt('3.145896점')  //  3

=> parseInt는 정수로 값을 반환하기 때문에 뒤에 문자열은 영향을 받지 않고 버림.
Number은 숫자인 것만 숫자로 바꿔줌 숫자가 아닌게 하나라도 있다면 NaN을 반환.

Numner(s) === parseInt(s)

=> Number(s)는 숫자가 아닌 것은 무조건 NaN값을 반환, parseInt(s)는 문자열이 나오기 직전까지의 숫자를 반환
즉, Number(s)와 parseInt(s)는 s가 숫자로만 이루어진 문자열이여야지만 같게 나옴

  • 나의 다른풀이
function solution(s) {
    if (s.length === 4 || s.length ===6) {
        if (s.includes('e')) return false
            return !isNaN(s)
    }else return false
}

=> 문자열의 길이 조건을 통과하면, 그 문자열에 'e'가 포함되어 있는지 판별해야한다. 왜냐하면 자바스크립트에서 'e'는 지수로 쓰이기 때문에 '1.2e+3'과 같이 e가 들어간 문자열도 숫자로 판단하기 때문이다. 그래서 e가 있으면 문자열로 판단하는 조건을 붙여주었다.
e가 포함되어 있지 않다면 isNaN함수의 결과를 !연산자를 이용해 판별한다. (isNaN은 숫자가 아니면 true를 반환하므로 문제에서는 숫자일 때 true를 반환해야하므로 !사용)

profile
코린이 탈출을 기원하는 코린이

0개의 댓글