[Programmers] 문자열 다루기 기본 - JS

지냐킴·2022년 7월 18일
0

코딩테스트

목록 보기
5/28
post-thumbnail

✅문제 설명

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

  • 제한 사항
    s는 길이 1 이상, 길이 8 이하인 문자열입니다.
  • 입출력 예
    s return
    "a234" false
    "1234" true
  • 기본코드
function solution(s) {
    var answer = true;
    return answer;
}

✅ 내 문제풀이

function solution(s) {
    var answer;
    if(s.length === 4 || s.length === 6){
        if(isNaN(s)){ 
            answer = false;
        } else {
            answer = true; 
        }
    } else {
        answer = false;
    }
    
    return answer;
}        

길이가 4 혹은 6이 아니면 false,
맞다면 isNana 값이 숫자가 맞으면 true, 아니면 false

isNaN() : is Not a Number이다.
매개변수가 숫자가 아닐 경우 true를 리턴하고,
매개변수가 숫자일 경우 false를 리턴한다.
설명

이렇게 하면 e를 지수로 인식하게 된다 1e5이면 1의 5승 =1이된다

function solution(s) {
    var answer;
    if(s.length === 4 || s.length === 6){
        if (s.includes('e')) return false;
        return !isNaN(s);         
    } else return false;  

} 
  • .includes() 메소드를 사용해 'e'를 판별하고 포함한다면, false
  • 'e'가 포함되어 있지 않다면 !.isNaN 함수 사용해 숫자일 경우 true, 아닐경우 false
  • !(not) 연산자

✅ 다른 풀이 방법

1) Array.prototype.every()

function solution(s) {
    if(s.length === 4 || s.length === 6){
        return s.split("").every(c => !isNaN(c)) 
      // 모든 요소가 number이면 true리턴
    } else {
        return false;
    }
}

문자열을 split('')으로 요소 하나하나 배열로 만든 후, every로 그 모든 요소가 주어진 조건을 통과하면 true, 그렇지 않다면 false.

2) 정규식

/*
/\d{6}/: 6자리 숫자 포함
/^\d{6}/: 6자리 숫자로 시작
/\d{6}$/: 6자리 숫자로 끝
/^\d{6}$/: 6자리 숫자
/^\d{6}$|^\d{4}$/: 6자리 숫자 또는 4자리 숫자
*/

function solution(s) {
  let regex = /^\d{6}$|^\d{4}$/;
  return regex.test(s);
}

천잰가..

profile
코린이일기

0개의 댓글

관련 채용 정보