알고리즘/알고리즘 풀이

[프로그래머스_1] 문자열 다루기 기본 JAVA

데부한 2022. 6. 29. 00:17
반응형

..?? 10점?

 

 

코딩테스트 연습 - 문자열 다루기 기본

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

programmers.co.kr

 

 

문제 설명

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

 

제한 사항

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

 

입출력 예

반응형

CODE

class Solution {
    public boolean solution(String s) {
        if(!(s.length() == 4|| s.length() == 6)) return false;
        try {
            int isNum = Integer.valueOf(s);
        } catch (Exception e) {
            return false;
        }
        return true;
    }
}

어.. 어려운 건 딱히 없어서...설명을 해야하나 싶지만 10점 맞은 기념으로 주저리 주저리 써보자면.. 일단 문제에서 주는 첫 번째 조건이 s의 길이가 4이거나 6인 경우만 true라고 해서 문자열 길이 조건을 먼저 걸어주었고 길이가 4이거나 6인 경우이고 이제 문자에 숫자가 포함되었는지, 아니면 숫자 외의 다른 문자가 포함되었는지 검사해야한다. 그래서 Integer.valueOf(s)로 문자열을 숫자로 변경해주었고, 여기에서 에러가 터지면.. 즉, 변환이 되지 않으면 숫자 외에 다른 값이 포함되어 있는 거라 catch에서 return false로 끝냈다.

valueOf()를 사용한 이유는 최근 김영한님 스프링 강의에서 valueOf()를 사용할 일도 있었고 예외처리를 좀 자주했어서 이런 로직을 금방 생각할 수 있었던 거 같다. 근데 또 가만히 생각해보니 문자열를 숫자로 변환하는 함수 중에 parseInt()도 있다는 게 생각났다. 두 함수의 차이점이 궁금해서 찾아봤다.

parseInt와 valueOf의 차이점

결론부터 말하자면 반환 타입이 다르다.

  • parseInt()는 int 타입을 반환한다.         public static int parseInt(String s) throws NumberFormatException {}
  • valueOf()는 Integer 객체를 반환한다.  public static Integer valueOf(String s) throws NumberFormatException {}

내 코드의 경우에는 자동 형변환으로 인해 int 변수에 값이 잘 담길 수 있었던 거 같다. 그래도 굳이 Integer Object 메서드를 형변환해주는 과정이 들어가기 때문에 Primitive type인 int 변수에 담을 때는 parseInt()를 사용하는 게 더 좋을 것 같다.

 

실행 결과

 

 

반응형