문제 설명
문자열 s의 길이가 4혹은 6이고, 숫자로만 구성되있는지 확인해주는 함수, solution을 완성하세요.예를들어 s가 a234이면 False를 리턴하고 1234라면 True를 리턴하면 됩니다.
제한 사항
s
는 길이 1 이상, 길이 8 이하인 문자열입니다.
입출력 예
s | return |
---|---|
a234 | false |
1234 | true |
public boolean solution(String s){
boolean answer = true;
if(s.length() == 4 || s.length()==6) {
for (int i = 0; i < s.length(); i++) {
if (!Character.isDigit(s.charAt(i))) {
answer = false;
break;
}else {
answer = true;
}
}
}else{
answer = false;
}
return answer;
}
이 문제는 겉보기에는 상당히 쉬워보였지만 if문의 예외처리를 조금만 빼먹는다면 테스트 케이스에서 걸리기 때문에 신중하게 풀자는 의미로 정리를 하려한다.
문자열인지 판별하는 메소드가 있을거라고 생각되어 검색해 Character.isDigit메소드를 찾았다.
처음엔 for문만 작성해 if~else를 했다. -> 하지만 실패
문제를 다시 읽어보니 문자열의 길이에 대한 조건이 주어졌다. 앞에 if문으로 길이의 제한을 뒀다. -> 그래도 실패
엥 이게 왜 틀리는거지? 하고 좀 더 생각했다.
생각해보니 예외처리를 하나 빼먹었다.
바로 문자열의 길이가 4, 6이 아닌경우에 대한 예외처리를 하지 않았기 때문이다.
추가하니 성공
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 이상한 문자 만들기(level 1) (0) | 2018.12.17 |
---|---|
[백준+프로그래머스] 1978번 소수 찾기 + 프로그래머스 소수 찾기 (0) | 2018.12.10 |
[프로그래머스] K번째 수 (level 1) (0) | 2018.12.07 |
[프로그래머스] 문자열 내 마음대로 정렬하기 (level 1) (0) | 2018.12.03 |
[프로그래머스] 가장 큰 수(정렬 level 2) (0) | 2018.11.19 |
댓글