Algorithm/Java

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

고고마코드 2022. 1. 4. 22:28
반응형
12918번 문제

코딩테스트 연습 - 문자열 다루기 기본 | 프로그래머스 (programmers.co.kr)

 

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

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

programmers.co.kr

 


풀이

문제는 어렵지 않은데 문제를 제출하니 5번,6번 예제에서 실패가 나왔다.

문제 설명을 다시 읽어보니 문자열의 길이에 제한이 있더라...

 

  • 1번 풀이
public boolean solution2(String s) {
	int len = s.length();
	return (len == 4 || len == 6) && s.matches("\\d*");
}

정수 탐색 정규식을 활용

\d*: 여러 개의 정수 탐색, 정수가 아닌 문자가 있으면 false

 

  • 2번 풀이
public boolean solution(String s) {
	int len = s.length();
	if (len == 4 || len == 6) {
		for (char ch : s.toCharArray()) {
			if (ch < '0' || ch > '9')
				return false;
		}
		return true;
	}
	return false;
}

아마 이 방법이 정석이지 않을까 싶다.

문자열을 순서대로 탐색하며 '0' ~ '9' 를 벗어나는 문자가 있는 경우 false 반환

 

  • 3번 풀이
public boolean solution3(String s) {
	int len = s.length();
	if (len == 4 || len == 6) {
		try {
			Integer.parseInt(s);
			return true;
		} catch (NumberFormatException e) {
			return false;
		}
	} else {
		return false;
	}
}

✅ 예외를 활용

Integer.parseInt(String s) 메소드는 정수로 반환할 수 없는 문자열일 경우에는 NumberFormatException 예외가 발생한다. 해당 예외를 catch 해서 false를 반환한다.

 

반응형