[프로그래머스] Lv.1 문자열 다루기 기본 (JS)

아름·2023년 12월 20일
0

알고리즘

목록 보기
22/26
post-custom-banner

🔎 문제

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

제한 사항

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

입출력 예

sreturn
"a234"false
"1234"true

🔓 풀이 과정

고민

1) 문자열로 된 s를 숫자로 바꾸기
2) 문자열이 숫자로만 구성되어있다면 정수로 변환됨
function solution(s) {
  return (s.length === 4 || s.length === 6) && Number(s) ? true : false;
}

잘 풀었다고 생각했는데 제출을 하니 오답이라고 떴다. 알고보니 알파벳 'e'가 들어갈 때는 지수형식("1e22")으로 인식해 이것 또한 숫자로 리턴한다.

나의 풀이

function solution(s) {
  let num = parseInt(s); // 문자열로 된 s를 "정수"로 바꾸기
  return (s.length === 4 || s.length === 6) && s == num ? true : false;
}

그 밖의 풀이

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

  return regex.test(s);
}

// 정규표현식.. 대단하다

// ^\d{6}$: 이 패턴은 문자열이 6자리 숫자로 구성되어야 함을 의미함.
// 여기서 ^는 문자열의 시작을, \d는 숫자를, {6}는 앞의 숫자가 6번 반복되어야 함을 나타냄.
// $는 문자열의 끝을 나타냄. 이 부분은 정확히 6자리 숫자인지를 검증함.

// 두 패턴은 | (또는)로 구분.
// 문자열이 6자리 숫자이거나 4자리 숫자이면 이 함수는 true를 반환하고, 그 외의 경우에는 false를 반환.
profile
내 꿈은 개발자
post-custom-banner

0개의 댓글