Algorithm :: 프로그래머스 문제풀기 -7
문자열 다루기 기본
문자열 s의 길이가 4 혹은 6이고, 숫자로만 구성돼있는지 확인해주는 함수, solution을 완성하세요. 예를 들어 s가 “a234”이면 False를 리턴하고 “1234”라면 True를 리턴하면 됩니다.
제한사항 : s는 길이 1 이상, 길이 8 이하인 문자열입니다.
예전에 풀다가 그만두었던 문제를 다시 풀어보려 한다. 완전 알고리즘 초반에 풀었던 문제라 다시 보니 진짜 엉망진창으로 풀었다는 걸 깨달았다. 문제를 제대로 인지하지 못하고 답만 얻으려는 그런... 풀이였다.😓
기존의 풀이 방법은 위와 같다. 들어오는 값의 타입이 숫자이고, 그 길이가 1~8일 경우에만 참, 아닐 경우엔 거짓을 반환한다. 처음에는 이 부분이 왜 틀린 건지 이해가 안 돼서 고민하고 고민하다가 시간이 넘어서 넘겼었는데ㅋㅋㅋㅋ 이제는 알겠다. 애초에 들어오는 값의 타입이 숫자라는 전제가 잘못된 것이었다. 들어오는 값은 문자이기 때문에 이부분을 확인한다면 절대 참의 값이 나올 수 없었다.
해당 코드를 반성하며 이번에는 정규식 표현으로 작성해보려고한다. 정규식 표현은 항상 볼때마다 어려워서 블로그를 참고하며 작성하는데 이부분도 꼭 정리해서 블로깅해야겠다.
풀었던 조건식은 아래와 같다.
1. 문자열 S의 길이 체크
2. 문자열 S안에 숫자가 존재하는지 체크
3. 정규식을 통과하는지 체크
function solution(s) {
let result = /^\d{6}$|^\d{4}$/;
return result.test(s);
}
정규식을 사용하면 많은 알고리즘 문제를 간단하게 풀 수 있다. 정규식에 대해 조금 더 공부해봐야겠다!
출처: 프로그래머스 코딩 테스트 연습, https://programmers.co.kr/learn/challenges