Programmers / 문자열 다루기 기본 - 12918

y1nlog·2025년 1월 3일
0

[level 1] 문자열 다루기 기본 - 12918

문제 링크

구분

코딩테스트 연습 > 연습문제

채점결과

정확성: 100.0
합계: 100.0 / 100.0

제출 일자

2025년 01월 03일 09:39:12

문제 설명

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

제한 사항
  • s는 길이 1 이상, 길이 8 이하인 문자열입니다.
  • s는 영문 알파벳 대소문자 또는 0부터 9까지 숫자로 이루어져 있습니다.
입출력 예
s return
"a234" false
"1234" true

풀이

function solution(s) {
    if(s.length === 4 || s.length === 6){
        const regEx = new RegExp('^\\d+$');
        return regEx.test(s);
    } else return false;
}

성능 요약

메모리: 33.5 MB, 시간: 0.09 ms

노트

  • 정규표현식 사용 RegExp

정규표현식
텍스트 처리에 막강한 친구.

const regEx = new RegExp('^\\d+$');
regEx.test(s);

오늘 사용한 '^\\\d+$' 분해하기.
^ : 정규표현식 시작
$ : 정규표현식 끝
\d : 모든 숫자 (0~9) - 리터럴 방식
\\d - 생성자 방식
+ : 바로 앞 패턴이 1회 이상 반복
/ : 리터럴 방식의 정규표현식 선언 /^\d+$/
리터럴로 정규표현식을 쓰면 ''을 생략 가능하다.

정규표현식 선언

// 리터럴 방식
let regex1 = /^\d+$/;
// 생성자 방식
let regex2 = new RegExp("^\\d+$")

테스트하기

regex2.test("1234") // true
regex2.test("12345") // true
regex2.test("123a") // false
  • 생성자 방식은 이스케이프 문자()를 두 번 써야 하므로, 리터럴 방식을 주로 사용한다.
  • 하지만 생성자 방식은 동적 패턴을 만들 수 있다.
// 동적으로 패턴 길이 지정하기
function makeDigitRegex(length) {
    return new RegExp(`^\\d{${length}}$`);
}

const regex4 = makeDigitRegex(4);  // 정확히 4자리 숫자
const regex6 = makeDigitRegex(6);  // 정확히 6자리 숫자

regex4.test("1234")    // true
regex4.test("12345")   // false
  • 텍스트에 대한 검증이 코드 내에서 계속 필요하다면, 생성자 방식으로 정규표현식 함수를 만들어 재사용해도 좋을 것 같다.
  • 오늘은 정규표현식을 JS에서 처음 써봤다. 숫자로만 이루어져있는지 검증해보았고, 차후 만나게 될 알고리즘 문제로 차차 내용을 추가해보기로 한다.
profile
FrontEnd Developer

0개의 댓글