프로그래머스/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