1차 공부/알고리즘

문자열 다루기 기본

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

 

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

 

 

function solution(s) {

    if(s.length === 4 || s.length === 6){
        return s.split("").every(c => !isNaN(c)) //c가 NaN인지 확인. 문자가 있다면 NaN인데, 
    } else {                                     //숫자일때 true여야하니 !를 붙임.
        return false;
    }
}

일단 이문제는 내가 풀질 못했다. 위는 참고한 답안이며, 이를 해석해보고자 한다.

 

if(s.length ===4 || s.length===6) = 만약 입력값의 길이가 4 또는 6이라면 이라는 뜻. 논리합연산자를 사용해

                                                               두쪽 아무곳이나 true라면 if문을 진행한다.

 

return s.split('').every(c=>!isNaN(c)) = 위의 if문을 만족했을 시 반환 할 값이다.

 

  먼저 입력값s를 split('')을 이용해 문자별로 배열화 시킨다.

 

  그 뒤 .every()를 이용해 배열 내 모든 값이 every()안의 함수를 통과하는지 판별한다.

 

  every()메소드 안 함수는 다음과 같다.

 

  s배열의 요소들을 각각 isNaN()에 넣어 반대값을 출력하는 것이다.

 

  isNaN은 Not a Number일때 true값을 주기 때문에

  앞에 !를 붙여 숫자일때 true, 문자가 포함됐을때 false를 반환하도록 한다.

 

마지막으로 else는 s배열의 길이가 4또는 6이 아닐때 false를 반환하도록 설정한다.

'1차 공부 > 알고리즘' 카테고리의 다른 글

수박수박수박수박수박수?  (0) 2022.11.23
서울에서 김서방 찾기  (0) 2022.11.23
문자열 내 p와 y의 개수  (0) 2022.11.23
내적  (0) 2022.11.23
나누어 떨어지는 숫자 배열  (0) 2022.11.23