Recent Posts
Recent Comments
Link
Today
Total
01-05 04:09
관리 메뉴

채린씨의 티스토리

[Programmers] Level1 - 문자열 다루기 기본(JavaScript) 본문

코딩테스트 대비

[Programmers] Level1 - 문자열 다루기 기본(JavaScript)

채린씨 2022. 4. 16. 00:14

문제 설명

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

 

제한 사항

  • s는 길이 1 이상, 길이 8 이하인 문자열입니다.

 

입출력 예

s return
"a234" false
"1234" true

 


나의 첫 번째 풀이(실패)

쉽네~ 하고 풀었는데 하나의 테스트 케이스에서만 실패해서 당황했다.


반례: 1e22
=> 1e22를 Number()를 이용해서 숫자로 형 변환하면 1의 22승, 즉 1이 된다!!!
=> 이런 코너 케이스도 생각할 수 있도록 하자...

function solution(s) {
    return (s.length === 4 || s.length === 6) && (Number(s)) ? true : false;
}

 

나의 풀이

function solution(s) {
  // 길이가 4 혹은 6이 아니면 false 반환
  if (s.length !== 4 && s.length !== 6) return false;
  // 각 자리중에 숫자가 아닌 것이 하나라도 있으면 false 반환
  for (let i = 0; i < s.length; i++) {
    if (isNaN(Number(s[i]))) return false;
  }
  // 위의 모든 조건에 포함되지 않으면
  // (길이가 4 혹은 6이고, 숫자로만 구성되어 있으면) true 반환
  return true;
}

 

좋았던 다른 사람의 풀이

정규표현식을 사용한 점이 인상 깊었다.

/*
/\d{6}/: 6자리 숫자 포함
/^\d{6}/: 6자리 숫자로 시작
/\d{6}$/: 6자리 숫자로 끝
/^\d{6}$/: 6자리 숫자
/^\d{6}$|^\d{4}$/: 6자리 숫자 또는 4자리 숫자
*/

function solution(s) {
  let regex = /^\d{6}$|^\d{4}$/;
  return regex.test(s);
}

 


프로그래머스 문제들의 자바스크립트 풀이가 궁금하신가요? 아래 링크를 클릭해보세요!

https://programmers-solution-bank.netlify.app/

 

프로그래머스 해설 은행

 

programmers-solution-bank.netlify.app

 

 

 

Comments