TIL | [알고리즘] 문자열 다루기 기본(Java)

hyemin·2022년 3월 13일
0

알고리즘

목록 보기
17/38
post-thumbnail

THINKING

  1. s.length()가 4나 6이 아니면 false 반환 - if
  2. 문자열을 정수로 바꾸고 예외 상황이 오면 false반환

처음에는 위와 같이 풀이하고 싶었으나, 예외 상황 처리를 어떻게 적용할지 몰라 아래와 같이 했다.

1.s.length()가 4나 6이 아니면 false 반환 - if
2. 문자열으 하나씩 빼내서 '0'과 '9' 범위를 벗어나면 false 반환 = for, charAt(i)

내 풀이

class Solution {
    public boolean solution(String s) {
        if(s.length() != 4 && s.length() != 6) return false;
        for (int i = 0; i< s.length(); i++) {
            if (s.charAt(i) < '0' || s.charAt(i) > '9') return false;
        }        
        return true;
    }
}

좋아요 많이 받은 풀이

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;
    }
}

처음에 풀고 싶었던 방법이 좋아요 많은 풀이에 나와있었다.

배운 것

try-catch

try-catch문에 예외를 처리하기 위한 구문이다.

사용법

try {
	// 예외처리 테스트할 코드
} catch (Exception1 e1) {
	// Exception1이 발생했을 때 예외처리 구문(ex-예외 메시지)
}

예시

int num;

try {
	num = 4 / 0;
} catch (ArithmeticException e) {
	num = 7;
}
return num;

ArithmeticException은 정수를 0으로 나눌 때 생기는 에러이다. num을 0으로 나누었으므로 예외처리 구문이 수행되게 된다.

7

NumberFormatException은 숫자형 포맷 오류로 문자를 숫자로 변경하려고 할 때 생기는 에러이다.
s에 숫자만 담겨있다면 true가 s에 문자열이 포함되어있다면 Integer.parseInt()를 수행할 때 NumberFormatException 오류가 발생해 false를 반환한다.

0개의 댓글

관련 채용 정보