코딩테스트

프로그래머스 - 문자열 다루기 기본

오쟝 2024. 3. 7. 18:36

 

문자열의 길이는 간단하게 비교할 수 있지만 문자열이 전부 숫자로 이루어져 있는지는 어떻게 할 지 고민을 했습니다.. 그러던 중 정규식을 사용하면 어떨까? 라는 생각이 들었습니다.

 

* 정규식은 정해진 패턴과 일치하는 문자열을 찾을 때 사용하는 것입니다.

저는 숫자인지를 확인하는 정규식을 사용했습니다.

^[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~