[프로그래머스 / Lv 1] 문자열 다루기 기본 by JS

📄 문제

문자열 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 false;
  console.log(Number(s));
  return !isNaN(Number(s));
}

처음에 주어진 문자열 전체를 숫자로 바꿨는데 테스트 케이스 오류가 발생했습니다.

알고보니 문자 e가 포함되면 Number()가 지수로 인식해 e를 숫자로 판별했던 것이었습니다.

따라서 for문을 돌려 문자 하나하나에 Number()를 적용해주어야 했습니다.

function solution(s) {
  if (s.length !== 4 && s.length !== 6) return false;

  for (let i = 0; i < s.length; i++) {
    if (isNaN(Number(s[i]))) return false;
  }
  return true;
}

문자열에 Number() 메소드를 적용하면 NAN이 되니, isNaN()을 사용해 이를 판별했습니다.

isNaN을 !!isNaN으로 사용하면 더 간결하겠지만, 주어진 문자열이 “0000”인 경우에는 0도 false로 인식하므로 사용할 수 없었습니다.

👍 Best Practice

function alpha_string46(s) {
  var regex = /^\d{6}$|^\d{4}$/;

  return regex.test(s);
}

정규식을 이용한 풀이입니다.

주어진 문자열이 6개 혹은 4개의 숫자(d)로 이루어져 있는지 바로 확인할 수 있습니다.

문제 출처

  • 프로그래머스

Leave a comment