Lv. 1 - 문자열 다루기 기본
문제 설명
문자열 s의 길이가 4 혹은 6이고, 숫자로만 구성돼있는지 확인해주는 함수, solution을 완성하세요. 예를 들어 s가 “a234”이면 False를 리턴하고 “1234”라면 True를 리턴하면 됩니다.
제한사항
-
s
는 길이 1 이상, 길이 8 이하인 문자열입니다. -
s
는 영문 알파벳 대소문자 또는 0부터 9까지 숫자로 이루어져 있습니다.
입출력 예
s | return |
---|---|
a234 | false |
1234 | true |
입출력 예 설명
3-1) 입출력 예 #1
- 없음
문제 풀이
const solution = (s) => {
// s의 길이는 4 혹은 6이 아닐경우 false 반환
if (s.length !== 4 && s.lenght !== 6) return false;
// 문자열을 배열로 만든 다음 숫자가 아닐 경우만 반환함
const strFilter = [...s].filter((str) => isNaN(str));
// 문자가 있는 경우 false, 없는 경우 true 반환
return strFilter.length > 0 ? false : true;
};
풀이
- 먼저
s
의 길이가 4 혹은 6이 아닐 경우 false 를 반환하게 만들어줬다. - 이후에 숫자로만 구성되어있는지 확인해 주는 함수를 만들기 위해
s
를 스프레드 문법으로 배열로 만들어isNaN
함수와filter
메서드를 사용하여 검증해줬다. -
strFilter
즉, 문자열이 담겨져 있는 경우 false를 없는 경우 true를 반환하여 문제 풀이를 완료했다.
다른 사람의 풀이 참고
정규식
을 사용한 다른 사람의 풀이가 있다. 정규식도 공부해야하나.. 걱정이다.
// 문제가 개편되었습니다. 이로 인해 함수 구성이나 테스트케이스가 변경되어, 과거의 코드는 동작하지 않을 수 있습니다.
// 새로운 함수 구성을 적용하려면 [코드 초기화] 버튼을 누르세요. 단, [코드 초기화] 버튼을 누르면 작성 중인 코드는 사라집니다.
function alpha_string46(s) {
var regex = /^\d{6}$|^\d{4}$/;
return regex.test(s);
}
// 아래는 테스트로 출력해 보기 위한 코드입니다.
console.log(alpha_string46("a234"));
링크
- 문제 링크: 문제 링크
- Git: rarrit github
출처: 프로그래머스 코딩 테스트 연습, https://school.programmers.co.kr/learn/challenges