Programmers 프로그래머스 코딩테스트 연습 - 문자열 다루기 기본 (JavaScript)
Programmers의 코딩테스트 연습문제 Level 1의 문자열 다루기 기본 문제를 JavaScript를 사용하여 문제를 풀어보도록 하겠습니다.
문제 설명
문자열 s의 길이가 4 혹은 6이고, 숫자로만 구성돼있는지 확인해주는 함수, solution을 완성하세요. 예를 들어 s가 a234이면 False를 리턴하고 1234라면 True를 리턴하면 됩니다.
제한 사항
- s는 길이 1 이상, 길이 8 이하인 문자열입니다.
입출력 예
s | return |
"a234" | false |
"1234" | true |
작성한 답
solution.js
function solution(s) {
return /^\d{4}$|^\d{6}$/.test(s);
}
설명
문자열 s의 길이가 4 혹은 6이고, 숫자로만 구성돼있는지 확인해주는 함수 solution을 완성하는 문제입니다.
이 문제를 해결하실 때, 많은 분들이 s의 글자 수를 구한 다음, s가 숫자로만 이루어져 있는지, 지수 형식일 때는 어떻게 해줘야 하는지를 따로 고민해서 조건을 걸어서 해결하시는 분들이 꽤 많은 것 같습니다.
하지만 이 문제는 문제 제목에도 나와있듯이 "문자열 다루기 기본" 입니다.
문자열 다루기에 가장 좋은 것은 무엇이냐, 바로 정규표현식이죠.
정규식을 사용하면 다른 것들은 신경쓰지 않고, 문자열 s가 해당 조건에 부합하는지 아닌지,
작성된 코드처럼 단 한줄로 정말 깔끔하게 문제를 해결할 수 있습니다.
여기에서는 정규식의 모든 것은 설명하지 못하고, 위에 작성한 정규식에 대해서 설명드리도록 하겠습니다.
먼저, ^는 문자열의 시작을 의미합니다.
\d는 숫자를 의미합니다. [0-9]와 같은 의미이죠.
{n}은 n개가 있다는 것을 의미합니다.
$는 문자열의 끝을 의미합니다.
|는 OR을 의미합니다.
즉, ^\d{4}$는 숫자 4개로만 이루어진 문자열을 의미하고, ^\d{6}$는 숫자 6개로만 이루어진 문자열을 의미하고, |를 사용해 숫자 4개로만 이루어진 문자열 혹은 숫자 6개로만 이루어진 문자열을 의미합니다.
이러한 의미로 만들어진 정규식에 test() 함수를 사용하여 문자열 s가 작성한 정규식인 숫자 4개로만 이루어진 문자열 혹은 숫자 6개로만 이루어진 문자열에 매칭되는 문자열인지 확인합니다.
매칭된다면 true를, 매칭되지 않는다면 false를 반환합니다.
이렇게하여 문자열 s가 길이가 4 혹은 6이고, 숫자로만 구성돼있는지, 오직 정규식만으로 문제를 이렇게 쉽고 간단하게 해결할 수 있습니다.
(설명이 잘 되었을지 모르겠습니다. 잘 모르겠다는 부분이 있으시다면 언제든지 댓글 남겨주세요!)
도움이 되셨다면 공감, 댓글 부탁드립니다!
궁금하신 점이나 요청 사항은 언제든지 말씀 해주세요!
감사합니다.
'Developer > Algorithm' 카테고리의 다른 글
Programmers 프로그래머스 코딩테스트 연습 - 정수 내림차순으로 배치하기 (JavaScript) (0) | 2020.09.01 |
---|---|
Programmers 프로그래머스 코딩테스트 연습 - 수박수박수박수박수박수? (JavaScript) (0) | 2020.08.31 |
Programmers 프로그래머스 코딩테스트 연습 - x만큼 간격이 있는 n개의 숫자 (JavaScript) (0) | 2020.08.28 |
Programmers 프로그래머스 코딩테스트 연습 - 평균 구하기 (JavaScript) (0) | 2020.08.27 |
Programmers 프로그래머스 코딩테스트 연습 - 행렬의 덧셈 (JavaScript) (0) | 2020.08.26 |
댓글