IT/Algorithm

문자열 다루기 기본

Huitopia 2021. 11. 13. 01:49
728x90

 

문제설명

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

 

제한사항

  • s는 길이 1 이상, 길이 8 이하인 문자열입니다.

 

입출력 예

s return
"a234" false
"1234" true

 

CODE

function solution(s) {
    let answer = true
    // true와 false 중 하나를 리턴해야 해서 넣어놈.

    // if ((s.length === 4 || s.length === 6) && !isNaN(s)) 
    // "1e22" 같은 지수 형식으로 숫자로 읽어버려서 테스트 11번만 통과 못함.
        if ((s.length === 4 || s.length === 6) && s.split("").every((c)=>!isNaN(c))){
        // 해석을 해보면 s의 길이가 4와 일치하거나(or) s의 길이가 6과 일치하게 되고
        // solution의 매개변수 S에 문자열을 .split을 사용해서 구분자를 ""로 한다면 문자 하나하나가 인덱스로 처리된다. ex) 서울 = "서","울"
        // 그 후 .every()를 활용해서 배열의 모든 요소를 조건에 맞는지 검사하여 지수 형식 "1e22"같은 것을 검사해주고
        //.every의 소괄호 안에 화살표 함수를 사용해서 매개변수 (c) 를 !isNaN(c)의 화살표 함수를 써줬다.
        // isNaN은 매개변수로 받은 값이 NaN인지 확인해서 Boolean(true / false) 값을 반환 하는 메서드임.
        // !(not)isNaN(s)를 사용해서 숫자로 변환시켜주기 위해 사용해서 answer의 값이 true로 반환 시켜주게함.
                answer = true
        
        } else {
            answer = false
    // 그렇지 않으면 answer변수에 false라는 반환값을 리턴시켜주게 했다.
        }
            return answer
}

// 테스트는 통과, 제출은 실패
function solution(s) {
    let answer = false;
    if (s != parseInt(s)) return false
    if (s.length == 4 || s.length == 6)
        if(!isNaN(s)) answer = true
    return answer
}

 

728x90