Skip to main content Link Search Menu Expand Document (external link) Copy Copied

문제

문제 설명

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

제한 사항

  • s는 길이 1 이상, 길이 8 이하인 문자열입니다.

입출력 예

s return
“a234” false
“1234” true

제출 답안

class Solution {
    public boolean solution(String s) {
        // 1. 길이가 4또는 6인지 확인한다. 그게 아니라면 false 반환.
        if(s.length() == 4 || s.length() == 6){
            char [] c = s.toCharArray();
            
            // 3. 그렇다면 false 아니라면 true 반환.
            for(int i = 0; i < c.length; i++){
                if(isText(c[i])) return false;
            }
            return true;
            
        }
        return false;
      
    }
    
    // 2. 혹시 대문자일지도 모르니 문자형 소문자로 바꿔고 소문자 a의 아스키코드보다 높은지 확인한다.
    private boolean isText(int a){
        return Character.toLowerCase(a) > 61;
    }
}

+

이걸 정규화 표현식으로 한줄로 풀 수 있었는데 아래 한줄이면 문자열 길이, 숫자확인 다 가능했다.

return s.matches("^[0-9]{4}|{6}$");