문자열 다루기 기본 (Level 1)
문제 설명
문자열 s의 길이가 4 혹은 6이고, 숫자로만 구성돼있는지 확인해주는 함수, solution을 완성하세요. 예를 들어 s가 "a234"이면 False를 리턴하고 "1234"라면 True를 리턴하면 됩니다.
제한 조건
s는 길이 1 이상, 길이 8 이하인 문자열입니다.
입출력 예
작성 코드
class Solution {
public boolean solution(String s) {
if (s.length() == 4 || s.length() == 6) {
try {
int x = Integer.parseInt(s);
return true;
} catch (NumberFormatException e) {
return false;
}
} else
return false;
}
}
코드 설명
- 3번라인 : 만약 입력받은 문자열 s의 길이가 4 또는 6이라는 조건이라면 4~9번 라인을 실행
- 4~9번라인 : Integer.parseInt() 메서드를 활용하면 문자열을 정수로 변환할 수 있다. 하지만 문자열에 숫자가 아닌 문자가 들어가있으면 NumberFormatException 에러가 발생한다. 그래서 try-catch절을 사용하여 에러가 나면 리턴값을 false로 선언해주었다.
- 10~12번라인 : 3번라인의 조건이 아니라면 11번라인을 실행한다.
다른 사람의 풀이
import java.util.*;
class Solution {
public boolean solution(String s) {
if (s.length() == 4 || s.length() == 6) return s.matches("(^[0-9]*$)");
return false;
}
}
자바의 정규식인 matches() 메서드로도 풀이가 가능하는게 놀라웠다. 지금 자바를 배우는 단계에서는 전혀 보지 못했던 정규식인데.. 그래서 대체 어떻게 쓰는 것인지 조금 더 알아보았다.
📌 String.matches()
특정한 패턴의 문자열을 포함하는지 확인할 수 있는 메서드이다. 특정 패턴이란 *정규표현식(Regex)를 의미한다. 문자열에 정규표현식이 일치하는지를 boolean 값으로 리턴한다. 이를 통해 문자열이 내가 찾는 패턴으로 구성되어 있는지 알 수 있다. 자세한 내요은 참고 자료를 통해 확인 가능하다.