[프로그래머스/Java] Lv.1 문자열 다루기 기본

febCho·2024년 7월 18일
0

코딩테스트

목록 보기
251/253
post-thumbnail

문제

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

- 제한사항

  • s는 길이 1 이상, 길이 8 이하인 문자열입니다.
  • s는 영문 알파벳 대소문자 또는 0부터 9까지 숫자로 이루어져 있습니다.

풀이

코드를 간단히 만들기 위해 try~catch를 활용했다. 우선 문자열일 때 length()를 활용해 문자열의 길이가 4 혹은 6인지를 체크하기 쉽기에 if문으로 이를 확인했다. 이때, 4 혹은 6일 경우 기본값이 false인 answer를 true로 바꾸어 주었다.

그리고 try 블럭에서 Integer.parseInt()로 파싱을 시도했다. 만약 숫자로만 이루어졌다면 catch 블럭으로 진입하지 않아 return으로 갈 것이고, 아니라면 catch 블럭으로 진입해 answer를 다시 false로 바꾼 다음 반환하게 했다.

문자열이 숫자로만 이루어져 있는지 확인하기 위해 for문으로 최대 8글자를 돌기 보단 이게 훨씬 효율적이락 생각했고, 실제로 메모리 사용이 적다는 것을 확인했다.

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

결과

profile
Done is better than perfect.

0개의 댓글