코딩 테스트

[프로그래머스] Lv1 문자열 다루기 기본 - Java

그리득 2024. 3. 21. 11:40
728x90

문제 출처

https://school.programmers.co.kr/learn/courses/30/lessons/12918

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

문제 설명

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

 

제한 사항

  • s는 길이 1 이상, 길이 8 이하인 문자열입니다.
  • s는 영문 알파벳 대소문자 또는 0부터 9까지 숫자로 이루어져 있습니다.

입출력 예

s return
"a234" false
"1234" true

코드

조건에 맞게 문자열 s의 길이가 4 또는 6이 아니면 false를 반환.

for문을 돌려서 숫자가 아니면 false를 반환.

 

사담

1. try-catch를 이용한 문제 풀이

NumberFormatException(숫자로 변환할 수 없을 때 생기는 오류)가 발생했을 때 catch를 해서 false를 반환하는 식의 풀이이다.

이런 식의 풀이도 있는 게 신기해서 올려봤다...

실무에선 유효성 검사로 에러 방지를 할 거 같지만 이런 식으로도 해결을 하는 지 궁금해졌다...

항상 예외는 발생하기 마련이니 유효성 검사와 함께 try-catch문으로도 방지를 하겠지...?

 

2. matches 정규식을 이용한 풀이

정규식으로 푼 풀이가 매우 깔끔하고 가독성이 좋아보인다.

특정 패턴의 문자열을 포함하는지 확인할 수 있는 matches의 함수는 이번 기회에 알게됐고

정규 표현식들을 전부 외우는 건....일단 그때그때 찾아서 쓰는 걸로....

 

matches가 contains와 하는 역할이 비슷한 느낌이라 검색을 해보니

contains()는 단순히 인자로 전달된 문자열이 존재하는지 여부를 리턴.

반면에 matches()는 정규표현식을 인자로 받고 동일한 패턴의 문자열이라면 true를 리턴한다.

 

정규식을 쓸 줄만 안다면 matches로 편하게 특정 문자열이 포함돼있는지 확인할 수 있을 거 같다.