본문 바로가기

Algorithm/프로그래머스

프로그래머스 level1 문제 : 문자열 다루기 기본(java)

반응형

문제 설명 : 


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


제한 조건 : 

1. s는 길이 1 이상, 길이 8 이하인 문자열입니다.



총 3개로 풀었는데....왜 항상 내가 하면 안되고 남에거 가져다 쓰면 통과되는거지 휴...


1. 정규식입니다.(이건 통과 못함...5번 6번 뭐지?)

boolean solution(String s) {
return Pattern.compile("(^[0-9]*$)").matcher(s).find();
}

이게 끝이에요!! 정규식을 굳이 다 외울필요는 없습니다. 인터넷에 많으니까요!! 그니까 다른 방식으로 풀어볼게요!!




2. 간단한 방식이에요 char로 변경해서 풀기!!(아마 다 떠올리셨겟죠?)

boolean isChecked1(String s) {
int length = s.length();
if(length != 4 && length != 6) return false;
for(int i=0; i<length; i++) {
char c = s.charAt(i);
if(c < '0' || c > '9') {
return false;
}
}
return true;
}

이 방식은 char형을 조금이라도 알았다면 풀 수 있었을거에요!




마지막으로 3번입니다. 3번은 try/catch를 사용했어요!


boolean isChecked2(String s) {
if(s.length() == 4 || s.length() == 6) {
try {
int x = Integer.parseInt(s);
return true;
} catch (NumberFormatException e) {
return false;
}
}
return false;
}



요딴식!!! 굳이 NumberFormatException 을 안쓰고 Exception을 써도 되긴 하지만!!! 있는거 쓰자구요


이상 문제풀이었습니다.

반응형