문제 설명

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

제한 조건

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

입출력 예

areturn
"a234"false
"1234"true

💡문제 해결💡

길이가 4또는 6인지 확인하기 아니면 false
문자열의 요소를 돌면서 아스키코드 값이 숫자 이외의 값이면 false

작성 코드

class Solution {
     public boolean solution(String s) {
            boolean answer = true;
            if (s.length() == 6 || s.length() == 4){
                for (char i : s.toCharArray()){
                    if ((i >= 65 && i <= 90) || (i >= 97 && i <= 122)){
                        answer = false;
                    }
                }
            }else answer = false;
            return answer;
        }
}

그 외 풀이

s를 Integer.parseInt(s)를 이용해서 int로 바꾸는데 이때 문자열에 숫자 이외의 값이 들어가 있으면 NumberFormatException이 발생함으로 캐치하면 false를 반환한다

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

정규식을 이용해서 0부터 9까지만 포함되는지 확인한다

class Solution {
  public boolean solution(String s) {
        if (s.length() == 4 || s.length() == 6) return s.matches("(^[0-9]*$)");
        return false;
  }
}
profile
안녕하세요. Chat JooPT입니다.

0개의 댓글