문제링크: https://programmers.co.kr/learn/courses/30/lessons/12918
문제 설명
문자열 s의 길이가 4 혹은 6이고, 숫자로만 구성돼있는지 확인해주는 함수, solution을 완성하세요. 예를 들어 s가 "a234"이면 False를 리턴하고 "1234"라면 True를 리턴하면 됩니다.제한 사항
s는 길이 1 이상, 길이 8 이하인 문자열입니다.
public boolean solution(String s) {
boolean answer = false;
String pattern = "^[0-9]*$"; //숫자만 포함
if(s.length()==6 || s.length()==4){ // 길이가 4인지 6인지 확인
answer = Pattern.matches(pattern,s);//패턴과 매치되는지 확인
}
return answer;
}
문제풀이는 길이가 4인지 6인지 먼저 확인하고, 맞으면 정규식을 통해 숫자만 포함 되어있는지 확인하는 방식으로 해결.
public boolean solution(String s) {
return s.matches("^[0-9]{4}$") || s.matches("^[0-9]{6}$");
}
정규식을 통해 길이까지 체크하면 코드 한줄로 해결가능.
public boolean solution2(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;
}
먼저 길이를 체크하고, try-catch를 이용해서 이 문자열을 int로 바꿀 수 있는지 확인, 문자가 포함되어있다면 exception에서 catch.