반응형
12918번 문제
코딩테스트 연습 - 문자열 다루기 기본 | 프로그래머스 (programmers.co.kr)
풀이
문제는 어렵지 않은데 문제를 제출하니 5번,6번 예제에서 실패가 나왔다.
문제 설명을 다시 읽어보니 문자열의 길이에 제한이 있더라...
- 1번 풀이
public boolean solution2(String s) {
int len = s.length();
return (len == 4 || len == 6) && s.matches("\\d*");
}
✅ 정수 탐색 정규식을 활용
\d*: 여러 개의 정수 탐색, 정수가 아닌 문자가 있으면 false
- 2번 풀이
public boolean solution(String s) {
int len = s.length();
if (len == 4 || len == 6) {
for (char ch : s.toCharArray()) {
if (ch < '0' || ch > '9')
return false;
}
return true;
}
return false;
}
아마 이 방법이 정석이지 않을까 싶다.
문자열을 순서대로 탐색하며 '0' ~ '9' 를 벗어나는 문자가 있는 경우 false 반환
- 3번 풀이
public boolean solution3(String s) {
int len = s.length();
if (len == 4 || len == 6) {
try {
Integer.parseInt(s);
return true;
} catch (NumberFormatException e) {
return false;
}
} else {
return false;
}
}
✅ 예외를 활용
Integer.parseInt(String s) 메소드는 정수로 반환할 수 없는 문자열일 경우에는 NumberFormatException 예외가 발생한다. 해당 예외를 catch 해서 false를 반환한다.
반응형
'Algorithm > Java' 카테고리의 다른 글
프로그래머스 - 짝수와 홀수 java (0) | 2022.01.09 |
---|---|
프로그래머스 - 하샤드 수 java (0) | 2022.01.08 |
프로그래머스 - 문자열을 정수로 바꾸기 java (0) | 2022.01.04 |
프로그래머스 - 약수의 합 java :: 12928 (0) | 2022.01.02 |
프로그래머스 - 자릿수 더하기 java (0) | 2021.12.28 |