문자열의 길이는 간단하게 비교할 수 있지만 문자열이 전부 숫자로 이루어져 있는지는 어떻게 할 지 고민을 했습니다.. 그러던 중 정규식을 사용하면 어떨까? 라는 생각이 들었습니다.
* 정규식은 정해진 패턴과 일치하는 문자열을 찾을 때 사용하는 것입니다.
저는 숫자인지를 확인하는 정규식을 사용했습니다.
^[0-9]*$ |
제가 사용한 정규식입니다. 이것을 한 번 해석해보겠습니다!
^는 시작에 포함되는지 $는 끝에 포함되는지를 의미합니다!
[]는 괄호 사이에 있는 문자를 포함한다는 의미, 0-9는 0부터 9까지, *은 없거나 있거나 입니다!
정규식을 사용해 작성한 코드는
class Solution {
public boolean solution(String s) {
return (s.length() == 4 || s.length() == 6) && s.matches("^[0-9]*$");
}
}
입니다!
결과는 정답!!
문제를 푼 후 다른 분의 코드도 살펴보았습니다.
가장 상단에 있는 코드를 한 번 보겠습니다.
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;
}
}
s의 길이가 4 또는 6일경우 try ~ catch문을 사용해 예외를 처리했습니다.
여기서 try는 예외가 발생할 수도 있는 구문을 적고, catch는 예외가 발생했을 때 처리할 내용을 적어줍니다.
만약 문자열이 숫자로만 이루어져 있지 않다면 NumberFormatException 예외가 발생하고 예외 발생시 false를 리턴, 예외가 발생하지 않으면 true를 리턴하는 방법으로 문제를 해결했습니다!
>
오늘은 저와 다른 분 코드 모두 만족스러워서 따로 코멘트는 달지 않겠습니다!
그럼 20000~
'코딩테스트' 카테고리의 다른 글
프로그래머스 - 짝지어 제거하기 (0) | 2024.03.11 |
---|---|
프로그래머스 - 추억 점수 (0) | 2024.03.08 |
코딩테스트 - 없는 숫자 더하기 (2) | 2024.03.06 |
프로그래머스 - 푸드 파이트 대회 (1) | 2024.03.05 |
프로그래머스 - 다음 큰 숫자 (0) | 2023.12.31 |