[프로그래머스] 문자열 다루기 기본😅

GoGoDev·2021년 6월 14일
0

Programmers Lv.1🌱

목록 보기
34/46

https://programmers.co.kr/learn/courses/30/lessons/12918#

첫번째 시도

function solution(s) {
    if(s.length === 4 || s.length === 6){
        s = s*1; // s에 1을 곱하여 숫자로 만들어주었다.
        if(Number.isInteger(s) === true)
            return true;
    }
    return false;
}

테스트 11번에서 오류가 나왔다.
찾아보니 '1e22'를 테스트했을 때, 숫자로 인식하여 true가 반환되었다.
e를 숫자로 바꾸면 자연로그 의 밑이 되어 지수 표현이 되어 숫자 취급을 한다.

'1e22'에 *1을 해주면 1e+22가 나온다.

function solution(s) {
    var answer = parseInt(s)
    if((s.length === 4 || s.length === 6) && answer == s){ // answer 과 기존 s를 비교한다.
        if(Number.isInteger(answer) === true)
            return true;
    }
    return false;
}

다른 풀이 방법
1. 정규식

function alpha_string46(s){
  var regex = /^\d{6}$|^\d{4}$/;
  return regex.test(s);
}
function alpha_string46(s){
  var result = false;
  if((s.length == 4 || s.length == 6) && /^[0-9]+$/.test(s)) {
    result = true;
  }

  return result;
}

2. isNaN함수 사용(지수 e 에 막힌다.)

function solution(s) {
    return s.length === 4 || s.length === 6 ? !isNaN(s) : false;
}

js의 여러 함수가 존재하고 쓰임새를 잘 알아야겠다.
자주 볼 수 있는 정규식에 대해 한번 공부해보자

profile
🐣차근차근 무럭무럭🐣

0개의 댓글