본문 바로가기

프로그래머스 코딩(자바)/Level 1

Programmers Level 1 - 문자열 다루기 기본

728x90

문제 설명

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

 
제한 사항
  • s는 길이 1 이상, 길이 8 이하인 문자열입니다.
  • s는 영문 알파벳 대소문자 또는 0부터 9까지 숫자로 이루어져 있습니다.
 
입출력 예sreturn
s return
"a234" false
"1234" true

  • 공지 - 2022년 7월 22일 테스트케이스가 추가되었습니다.
  • 공지 - 2022년 7월 22일 제한 사항이 추가되었습니다.

 

1
2
3
4
5
6
7
8
9
10
11
class Solution {
    boolean solution(String s) {
       if(s.length()!=4 && s.length()!=6return false;
       try {
           Integer.parseInt(s);
           return true;
       }catch (Exception e) {
           return false;
       }
    }
}
cs

 

  문자열 길이 4 또는 6이 아니면 거짓을 리턴합니다.
  정수로 바꿨을때 예외가 난다면 숫자가 아닌 문자를 포함합니다.
  그래서 거짓을 리턴하고 예외가 없으면 숫자만으로 구성되어 있으므로 참을 리턴하면 됩니다.

 

1
2
3
4
5
class Solution {
    boolean solution(String s) {
        return s.length()==4 || s.length()==6 ? s.replaceAll("[0-9]","").length()==0 : false;
    }
}
cs

 

  정규표현식을 이용하여 숫자만 모두 지웠을때 길이가 0이면 숫자만으로 이루어져 있는것 입니다.

  정규 표현식을 s.matches("^[0-9]+$") 으로 대체해도 됩니다. 숫자로 시작해서 숫자로 끝나는 숫자만의 문자열 판단식입니다.

  ^ : 시작
  [] : 범위
  *  :  0개 이상
  +  : 1개 이상
  $ : 끝
  ^[0-9]+$ : 숫자로 시작해서 1개이상 나오며 숫자로 끝나는 문자열입니다. 

 

1
2
3
4
5
class Solution {
    boolean solution(String s) {
        return  s.matches("[0-9]{4}|[0-9]{6}") ;
    }
}
cs

 

  정규 표현식을 다음과 같이 작성하면 조건문 없이 가능합니다. 

  [0-9]{4}|[0-9]{6}

  | 는 OR를 나타냅니다.


  matches()메서드는 문자열이 패턴과 일치하는지 판단합니다.

  위의 패턴은 숫자 4자리 또는 숫자 6자리와 일치하는지 판단합니다. 

  문자열을 다룰때 정규 표현식은 참으로 유용합니다.

  s.matches("\\d{4}|\\d{6}") ;

  위의 식도 동일한 결과를 나타냅니다.

  \d : 숫자
 \D : 숫자가 아닌문자

  자바에서 \는 이스케이프 문자이므로 반드시 \\를 사용해야 합니다.

 

 

728x90