일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- Android
- androidstudio
- bitmap
- BOJ
- Canvas
- CS
- Database
- DBeaver
- DP
- Ecilpse
- Eclipse
- firebase
- git
- github
- GooglePlayServices
- gradle
- IDE
- IntelliJ
- java
- json
- kotlin
- level2
- linux
- mariadb
- MYSQL
- Paint
- permission
- python
- Sorting
- sourcetree
Archives
will come true
[프로그래머스 / Level1] 문자열 다루기 (Java) 본문
728x90
문제
https://programmers.co.kr/learn/courses/30/lessons/12918
기존 코드 (성공)
public boolean solution(String s) {
if((s.length() == 4 || s.length() == 6) && s.replaceAll("[^0-9]", "") == s){
return true;
}else{
return false;
}
}
조건1) 문자열의 길이가 4이거나 6. (OR)
조건2) 문자열은 숫자로만 구성 (=문자열에 숫자가 아닌값이 존재하지 않음)
replaceAll 메소드를 통해 문자열에서 숫자가 아닌 값을 제거한 결과물(String)이 기존 문자열과 같을 경우
=> replaceAll 대체 결과 문자열이 변경되었다면 기존 문자열에 '숫자가 아닌 값'이 존재했다는 뜻
학습 내용
A. 문자열 패턴 체크
메서드 | 설명 |
boolean matches(String regex) | 해당 문자열이 정규식 패턴에 부합하는지 체크 (true/false) |
B. 정규식 문법
정규식 | 설명 |
^ | 문자열 시작 |
$ | 문자열 종료 |
. | 임의의 한 문자 |
? | 앞문자가 없거나 한번 {0~1} |
* | 앞문자가 없거나 한번 이상 {0~n} |
+ | 앞문자가 한번 이상 {1~n} |
[] | 문자의 집합이나 범위. 범위는 '-'로 지정, [] 내에의 ^은 not을 의미. |
{} | 문자 존재 횟수 또는 범위 {n} : n번 {n,} : n번 이상 {n, m} : n번 이상 m번 이하 |
() | 괄호 안의 문자를 하나의 문자로 인식 |
| | OR 연산 |
\d | 숫자 문자 [0-9] |
\D | 숫자를 제외한 문자 [^0-9] |
\w | 알파벳이나 숫자 [a-zA-Z0-9] |
\W | 알파벳이나 숫자를 제외한 문자 [^\w] |
\s | 공백 문자 [\t\n\x0B\f\r] //공백 여러개 : \s+ |
\S | 공백 문자를 제외한 문자 |
※ ^의 위치에 따른 정규식의 차이
^[0-9] : 숫자로 시작 (^이 시작을 의미)
[^0-9] : 숫자가 아님 (^이 not을 의미)
개선 코드 (성공)
public boolean solution2(String s) {
return s.matches("^[0-9]{4}|{6}$");
}
정규식 : ^[0-9]{4}|{6}$"
= 시작과 끝 사이가 오직 숫자[0-9]로만 구성되며, 4자리 혹은 6자리인 문자.
728x90
'Algorithm' 카테고리의 다른 글
[프로그래머스 / Level1] 다트 게임 (Java) (0) | 2021.10.31 |
---|---|
[프로그래머스 / Level1] 3진법 뒤집기 (Java) (0) | 2021.10.30 |
[프로그래머스 / Level1] 소수 찾기 (Java) (0) | 2021.10.30 |
[프로그래머스 / Level1] 시저 암호 (Java) (0) | 2021.10.29 |
[프로그래머스 / Level1] 이상한 문자 만들기 (Java) (0) | 2021.10.26 |
Comments