Algorithm

Algorithm :: 프로그래머스 문제풀기 -7

hooti 2020. 10. 20. 19:26

문자열 다루기 기본 

문자열 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