COCO World

[JavaScript/자바스크립트] 프로그래머스 Lv.1 - 문자열 다루기 기본 본문

코딩테스트/프로그래머스

[JavaScript/자바스크립트] 프로그래머스 Lv.1 - 문자열 다루기 기본

코코월드주인장 2023. 1. 29. 15:47

🍰 문제 설명

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

🍰 제한 조건

  • s는 길이 1 이상, 길이 8 이하인 문자열입니다.
  • s는 영문 알파벳 대소문자 또는 0부터 9까지 숫자로 이루어져 있습니다.

🍰 입출력 예

sreturn

s return
"a234" false
"1234" true

🍰 작성 솔루션

:  NaN은 숫자가 아님을 뜻하는 자료형

function solution(s) {
    var answer = true;

    if (isNaN(s)) {	// s의 문자열이 NaN인 경우 false 반환
        return false;
    } else {	// NaN에는 숫자 지수e는 걸러지지 않음
        if (s.includes('e')) {	// 따라서 s가 숫자로 이루어져있지만 지수e가 포함되어 있는 경우
            return false;	// false 반환
        } else {	// 이제 완벽하게 s의 문자열이 숫자로만 이루어져 있고,
            if (s.length === 4 || s.length === 6) {	// s의 문자열 길이가 4개 또는 6개 일 경우
               return true;	
            } else {	// 문자열의 길이가 4개 또는 6개가 아닐 경우
               return false;                
            }
        }
    }
    return answer;
}

🍰 시도했던 솔루션

1. 테스트는 통과, 정확도 96%이라 미달

   : 찾아보니 이유는 자바스크립트에서의 숫자에 e가 붙은 지수 숫자도 문자열로 취급되어서 false를 반환하게 되기 때문

function solution(s) {
    var answer = true;

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