프로그래머스/Lv. 1

[프로그래머스 코딩테스트] 문자열 다루기 기본(Java)

Sigfriede 2023. 4. 5. 01:55

  문제 설명

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

 

  제한사항

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

 

  입출력 예

s return
"a234" false
"1234" true
class Solution {
    public boolean solution(String s) {
        boolean answer = true;
        if (s.length() != 4 && s.length() != 6) {
            answer = false;
        } else {
            for(int i = 0; i < s.length(); i++) {
                if (!Character.isDigit(s.charAt(i))) {
                    answer = false;
                    break;
                }
            }
        }
        return answer;
    }
}

  answer의 기본값은 true이므로, false일 경우의 조건만 작성하도록 하겠습니다.

  우선 문자열 s의 길이는 4 혹은 6이어야 하므로 &&(and) 논리 연산자로 s의 길이가 4 또는 6이 아닐 경우 false를 반환하도록 했습니다.

  문자열 s의 길이가 4 혹은 6일 경우 for문이 s의 길이만큼 순회합니다. isDigit 메소드로 s의 i번째 문자가 숫자인지 여부를 확인합니다. 만약 숫자라면 true, 숫자가 아니라면 false를 반환합니다. 현재 if문의 조건은 isDigit의 값이 true인 상황을 !로 부정하고 있으므로, 숫자 이외의 문자가 있다면 조건을 충족한다는 뜻입니다. 마찬가지로 answer에 false를 할당합니다. 하나만 숫자가 아니라고 하더라도, 문제에서 제시한 조건을 충족하지 않기 때문에 break를 통해 for문을 빠져나옵니다.

  try와 catch로 예외처리를 이용한 풀이, matches와 정규식을 이용한 풀이 등도 있네요. 이런 방법은 생각지도 못했습니다.