TIL

TIL - 20230408

신동편 2023. 4. 9. 02:23
728x90

자바 스터디에서 스터디원 분들이 푸실 문제들을 만들다가 밤을 새버려서 하루 종일 피곤했다.

그래서 강의를 들으면 졸면서 집중 못할 것 같아서 오늘도 하루종일 알고리즘 문제를 풀었다.

 

오늘도 어김없이 삽질을 좀 했다.

 

https://eastlight0418.tistory.com/39

 

프로그래머스 - 신규 아이디 추천 (JAVA)

카카오에 입사한 신입 개발자 네오는 "카카오계정개발팀"에 배치되어, 카카오 서비스에 가입하는 유저들의 아이디를 생성하는 업무를 담당하게 되었습니다. "네오"에게 주어진 첫 업무는 새로

eastlight0418.tistory.com

 

코드를 다 쓰고, 코드를 실행하니 별 문제 없이 성공하길래 제출 후 체점하기를 해보니 몇개의 문제가 실패가 뜨는 것이었다.

문제가 사실 단계별로 코드를 적으면 되는 간단한 문제라고 생각했는데 막혀버려서 당황했다.

 

뭐가 문제인지 몰라서 테스트 케이스를 여러개 추가해서 print를 부분부분 찍어서도 해보고, 매개변수가 "."으로 주어지면 실패가 뜨는 것인가 싶어서 따로 예외처리도 해보고, 

코드의 순서도 바꿔봤다.

 

결국 문제는 특수문자를 지우는 코드 중에서

replaceAll()의 문제였는데,

new_id = new_id.replaceAll("[~!@#$%^&*()=+[{]}:?,<>/]","");

처음에는 이렇게 적었었는데, 나는 "[]" 안에 들어있는 것들이 전부 ""로 바뀌는 것인 줄 알았는데, 아니었나보다.

그래서 도움을 주신 분 말씀대로 정규식을 넣었더니 해결되었다.

 

자주 쓰이는

패턴 의미
A-Z 모든 영어 대문자 (A부터 Z까지)
a-z 모든 영어 소문자 (a부터 z까지)
A-Za-z 모든 영어 알파벳
0-9 모든 숫자 (0부터 9까지)
ㄱ-ㅎ 모든 한글 자음 (ㄱ부터 ㅎ까지)
ㅏ-ㅣ 모든 한글 모음 (ㅏ부터 ㅣ까지)
가-힇 모든 한글 문자 (가부터 힇까지)

 1. 기본 메타 문자 

기호 의미
. 모든 문자와 일치
[ ] 집합 구성원 중 하나와 일치
[^] 집합 구성원을 제외한 나머지와 일치
- 범위를 정의
\ 다음에 오는 문자를 이스케이프 (특수 문자임을 알림)
^ 문자열 또는 줄의 시작을 지정
$ 문자열 또는 줄의 끝을 지정
| OR 연산. 두 패턴 중 하나 이상과 일치

 2. 특수 문자 

기호 의미
\d 해당 패턴이 숫자의 집합에 속함. = 숫자임 = [0-9]
\D 해당 패턴이 숫자의 집합에 속하지 않음. = 숫자가 아님 = [^0-9]
\w 해당 패턴이 영숫자 문자나 밑줄(_)과 일치함 = [A-Za-z0-9_]
\W 해당 패턴이 영숫자 문자나 밑줄(_)이 아님 = [^A-Za-z0-9_]

※ 정규 표현식에서 백슬러시( \ )는 확장 문자지만, Java에서는 자체적으로 백슬러시( \ )를 특수 기호로 취급하기 때문에 Java에서 정규 표현식을 사용하고 싶다면 "\\w" 처럼 작성해주어야 한다. 

 3. 수량 한정자 

바로 앞의 글자 혹은 그룹의 개수를 표현하는데 사용한다. 그룹은 괄호로 묶어서 표현한다.

수량 한정자 의미 예제
* 0개 이상 star* : sta 뒤에 r이 0개 이상 sta, star, starr, starrr… 모두 매치
? 0개 혹은 1개 star? : sta 뒤에 r이 0개 혹은 1개 sta, star 매치 O / starr 매치 X
+ 1개 이상 star+ : sta 뒤에 r이 1개 이상 sta 매치 X / star, starr 매치 O
{n} n개 star{3} : sta 뒤에 r이 3 sta, star, starr 매치 X / starrr 매치 O
{n, m} n개 이상, m개 이하 star{1,2} : sta 뒤에 r이 1~2개 sta 매치 X / star, starr 매치 O
728x90

'TIL' 카테고리의 다른 글

TIL - 20230425  (0) 2023.04.26
TIL - 20230424  (0) 2023.04.24
TIL - 20230417  (0) 2023.04.18
TIL - 20230411  (1) 2023.04.12
TIL - 20230407  (0) 2023.04.08