프로그래머스/level1

[Java][프로그래머스] 문자열 다루기 기본

wave_m 2020. 10. 13. 12:32
728x90

문제 설명 : 

문자열 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) {
        boolean answer = false;
        
        if(s.length() == 4 || s.length() == 6){
            answer = s.matches("^[0-9]*$");
        }
        return answer;
    }
}

 

알고리즘 풀이 :

1. boolean 타입으로 반환해줄 answer을 false로 초기화하고 선언

2. if문으로 s가 4 혹은 6일 때만 answer에 matches("^[0-9]*$")를 사용해서 안에 내용이 숫자로만 구성되어있는지 확인 한 결과를 answer에 저장

- 여기서 ^[0-9]*$

^ 으로 우선 패턴의 시작

[0-9] 괄호사이에 두 숫자를 넣어 범위를 지정

* 를 넣으면 글자 수를 상관하지 않고 검사

$ 으로 패턴의 종료

3. return을 사용하여 answer을 반환

 

 

String.matches() 란 ?

- 정규식을 이용하여 문자열을 검색

- 특정 문자열을 검색할 때가 아닌 한글, 숫자 등과 같은 형태의 텍스트가 존재하는지 확인할 때 사용하면 좋음

 

표현식 설명
^ 문자열의 시작
$ 문자열의 종료
. 임의의 한 문자(문자의 종류 가리지 않음)
단, \는 넣을 수 x
* 앞 문자가 없을 수도 무한정 많을 수도 있음
+ 앞 문자가 하나 이상
? 앞 문자가 없거나 하나 있음
[] 문자의 집합이나 범위를 나타내며 두 문자 사이는 ~ 기호로 범위를 나타냄
[]내에서 ^가 선행하여 존재하면 not을 나타냄
{} 횟수 또는 범위를 나타냄
() 소괄호 안의 문자를 하나의 문자로 인식
| 패턴 안에서 or 연산을 수행할 때 사용
\s 공백 문자
\S 공백 문자가 아닌 나머지 문자
\w 알파벳이나 숫자
\W 알파벳이나 숫자를 제외한 문자
\d 숫자 [0-9]와 동일
\D 숫자를 제외한 모든 문자
\ 정규표현식 역슬래시(\)는 확장 문자
역슬래시 다음에 일반 문자가 오면 특수문자로 취급하고 역슬래시 다음에 특수문자가 오면 그 문자 자체를 의미
(?i) 앞 부분에 (?i) 라는 옵션을 넣어주면 대소문자를 구분하지 x

 

 

 

728x90