:ledger: 문제 설명

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

:one: 제한사항

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

:two: 입출력 예

s return
a234 false
1234 true

:three: 입출력 예 설명

:pushpin: 3-1) 입출력 예 #1

  • 없음

:ledger: 문제 풀이

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;
};

:computer: 풀이

  1. 먼저 s의 길이가 4 혹은 6이 아닐 경우 false 를 반환하게 만들어줬다.
  2. 이후에 숫자로만 구성되어있는지 확인해 주는 함수를 만들기 위해 s를 스프레드 문법으로 배열로 만들어 isNaN함수와 filter 메서드를 사용하여 검증해줬다.
  3. strFilter 즉, 문자열이 담겨져 있는 경우 false를 없는 경우 true를 반환하여 문제 풀이를 완료했다.

:fire: 다른 사람의 풀이 참고

정규식을 사용한 다른 사람의 풀이가 있다. 정규식도 공부해야하나.. 걱정이다.

// 문제가 개편되었습니다. 이로 인해 함수 구성이나 테스트케이스가 변경되어, 과거의 코드는 동작하지 않을 수 있습니다.
// 새로운 함수 구성을 적용하려면 [코드 초기화] 버튼을 누르세요. 단, [코드 초기화] 버튼을 누르면 작성 중인 코드는 사라집니다.
function alpha_string46(s) {
  var regex = /^\d{6}$|^\d{4}$/;

  return regex.test(s);
}
// 아래는 테스트로 출력해 보기 위한 코드입니다.
console.log(alpha_string46("a234"));

출처: 프로그래머스 코딩 테스트 연습, https://school.programmers.co.kr/learn/challenges