문제 설명 |
문자열 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 |