다희의 코딩 성장일기
[프로그래머스] level1. 신규 아이디 추천 (자바 JAVA) 본문
[ 문제 ] [프로그래머스] level1. 신규 아이디 추천 (자바 JAVA)
문제 링크 : https://programmers.co.kr/learn/courses/30/lessons/72410?language=java
# 접근 방법 및 풀이
- 자바의 문자열 정규식을 알면 간단히 풀 수 있는 문제다.
- 정규식은 처음 써보는데 인터넷에 찾아가면서 풀었다. replaceAll과 replace의 차이점을 알아야한다.
- 예시로, String.replaceAll("[0-9]", ""); 0부터9가 포함된 문자를 ""빈칸으로 바꿀 수도 있고,
- String.replaceAll("[^0-9]", ""); 이렇게 앞에 ^표시를 하면 0~9가 아닌 문자들을 ""빈칸으로 바꾼다는 의미가 된다.
- 문제에선 new_id = new_id.replaceAll("[^0-9a-z._-]", ""); 0~9의 숫자, a~z 소문자, . _ - 의 문자들을 제외한건 제거한다고 했으므로 다음과 같이 표현했다.
- 또 .이 2개이상 있다면 . 하나로 표현하라고 했는데 이부분은 new_id = new_id.replaceAll("[.]{2,}", "."); 이렇게 표현해주면 된다.
# 주의할 점
- 딱히 없음
JAVA 코드
class Solution {
public String solution(String new_id) {
new_id = new_id.toLowerCase();
new_id = new_id.replaceAll("[^0-9a-z._-]", "");
new_id = new_id.replaceAll("[.]{2,}", ".");
if(new_id.charAt(0)=='.') {
new_id = new_id.substring(1,new_id.length());
}
if(new_id.length() > 0 && new_id.charAt(new_id.length()-1)=='.')
new_id = new_id.substring(0, new_id.length()-1);
if(new_id.length() == 0)
new_id += "a";
if(new_id.length() >= 16) {
new_id = new_id.substring(0, 15);
if(new_id.charAt(14) == '.')
new_id = new_id.substring(0, 14);
}
if(new_id.length() <= 2) {
String s = new_id.substring(new_id.length()-1);
while(new_id.length() < 3) {
new_id += s;
}
}
return new_id;
}
}
REVIEW
'Algorithm > 프로그래머스' 카테고리의 다른 글
[프로그래머스] level1. 행렬의 덧셈 (자바 JAVA) (0) | 2021.08.19 |
---|---|
[프로그래머스] level1. 직사각형 별찍기 (자바 JAVA) (0) | 2021.08.19 |
[프로그래머스] level1. 위클리 챌린지 1주차 (자바 JAVA) (0) | 2021.08.19 |
[프로그래머스] level1. 크레인 인형뽑기 게임 (자바 JAVA) (0) | 2021.08.19 |
[프로그래머스] level1. 숫자 문자열과 영단어 (자바 JAVA) (0) | 2021.08.19 |
Comments