일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- 데이터베이스 기초지식
- 백준 1193
- Union Find
- 라이브커머스
- 다익스트라 최소비용구하기
- 조인종류
- 온라인쇼핑
- 백준 1700 자바
- 커머스기사
- 자바 2869
- 이커머스
- 개발일지
- 백준 괄호의값 자바
- 2504 괄호의값 자바
- 줄세우기 위상정렬
- 1062번 가르침
- 웹 기술면접
- 팀프로젝트
- 백준 멀티탭스케줄링 자바
- 백준 2252 자바
- 인사관리사이트
- 백준 1806 자바
- 백준 줄세우기 자바
- 괄호의값 스택
- 유니온 파인드
- 기업분석
- 프로그래머스
- 백준 최소비용구하기 자바
- Spring Security
- 자바 1193
Archives
- Today
- Total
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- 데이터베이스 기초지식
- 백준 1193
- Union Find
- 라이브커머스
- 다익스트라 최소비용구하기
- 조인종류
- 온라인쇼핑
- 백준 1700 자바
- 커머스기사
- 자바 2869
- 이커머스
- 개발일지
- 백준 괄호의값 자바
- 2504 괄호의값 자바
- 줄세우기 위상정렬
- 1062번 가르침
- 웹 기술면접
- 팀프로젝트
- 백준 멀티탭스케줄링 자바
- 백준 2252 자바
- 인사관리사이트
- 백준 1806 자바
- 백준 줄세우기 자바
- 괄호의값 스택
- 유니온 파인드
- 기업분석
- 프로그래머스
- 백준 최소비용구하기 자바
- Spring Security
- 자바 1193
Archives
- Today
- Total
JumpUp
프로그래머스 [신규 아이디 추천] 본문
[신규 아이디 추천] 문제는 "정규 표현식"을 알면 쉽게 해결할 수 있는 문제였다. 정규 표현식의 문법을 봐도 이해하기 어려워 보여,,,제대로 알고 넘어가지 않았었는데 이번 문제를 통해 기본적인 문법의 감을 익힐 수 도 있었고 정규 표현식을 활용해 문자열 처리를 쉽게 할 수 있는 방법을 알게되었다.
정규 표현식의 문법
nesoy.github.io/articles/2018-06/Java-RegExp
Java 정규식 표현(Regular Expression)에 대해
nesoy.github.io
[신규 아이디 추천] 풀이 코드
public class 신규아이디추천 {
public static void main(String[] args) {
String name = "...!@BaT#*..y.abcdefghijklm";
System.out.println(solution(name));
}
public static String solution(String new_id) {
new_id = new_id.toLowerCase(); //1단계 - 소문자
new_id = new_id.replaceAll("[^a-z0-9_.-]",""); //2단계 - 소문자, 일부 특수기호만 사용 가능
new_id = new_id.replaceAll("[.]{2,}","."); //3단계 - . 2번이상 반복 불가
new_id = new_id.replaceAll("^[.]|[.]$",""); //4단계 . 처음이나 끝에 위치하면 제거
if(new_id.isEmpty()) new_id = "a"; //5단계 - 빈 문자열이라면, a를 대입
if(new_id.length() > 15){ //6단계 - 16자이상이라면, 첫 15개의 문자를 제외한 나머지 문자들 제거. 만약, 제거후 마지막 문자가 마침표(.) 이라면 마침표 제거
new_id = new_id.substring(0,15);
new_id = new_id.replaceAll("[.]$","");
}
if(new_id.length() < 3){ //7단계 - 2자 이하라면, 마지막 문자를 문자열 길이가 3일 될때까지 반복해서 끝에 붙인다
char lastChar = new_id.charAt(new_id.length()-1);
while(new_id.length() != 3) {
new_id += lastChar;
}
}
return new_id;
}
}
2단계 정규표현식 해석
[^a-z0-9_.-]
소문자, 숫자, 특수문자 언더바(_) 마침표(.) 하이픈(-)을 제외한 문자
[abc] - abc문자 조합 중 하나
[^abc] - abc문자 조합을 제외한 문자
3단계 정규표현식 해석
[.]{2, }
마침표가 2번 이상 반복된다
4단계 정규표현식 해석
^[.] | [.]$
문자열의 시작이 마침표(.) 이거나 문자열 끝이 마침표(.) 인 경우를 의미
(+)
replaceAll(정규표현식, 대체문자) - 정규표현식 패턴에 일치하는 모든 문자를 대체문자로 대체한다.
replaceFirst(정규표현식, 대체문자) - 정규표현식 패턴에 일치하는 첫 문자만을 대체문자로 대체한다.
replace(char oldChar, char newChar) - 예전 문자를 새로운 문자로 대체해준다.
728x90
'알고리즘' 카테고리의 다른 글
프로그래머스 [방금그곡] (0) | 2021.04.16 |
---|---|
프로그래머스 [완주하지 못한 선수] (0) | 2021.04.05 |
프로그래머스 [폰켓몬] (0) | 2021.04.02 |
프로그래머스 [나누어 떨어지는 숫자 배열]_Stream (0) | 2021.03.22 |
프로그래머스 [Lv1. 소수찾기]_ 에라토스테네스의 체 (0) | 2021.03.18 |