하루에 한 문제
[프로그래머스 2021 KAKAO BLIND RECRUITMENT]신규 아이디 추천 -Java 본문
https://programmers.co.kr/learn/courses/30/lessons/72410
class Solution {
public String solution(String new_id) {
new_id=new_id.toLowerCase(); //1단계
//2단계
StringBuilder sb= new StringBuilder();
for(int i=0; i<new_id.length(); i++) {
char ch=new_id.charAt(i);
if((ch>=97 && ch<=122) || ch=='-' || ch=='_' || ch=='.' || Character.isDigit(ch)) sb.append(ch);
}
new_id=sb.toString();
//3단계
int size=new_id.length();
sb= new StringBuilder();
for(int i=0; i<size; i++) sb.append('.');
for(int i=0; i<size; i++) {
new_id=new_id.replace(sb.toString(), ".");
sb=new StringBuilder(sb.substring(1));
}
//4단계
if(new_id.length()!=0 &&new_id.charAt(0)=='.') new_id=new_id.substring(1);
if(new_id.length()!=0 &&new_id.charAt(new_id.length()-1)=='.') new_id=new_id.substring(0, new_id.length()-1);
//5단계
if(new_id.equals("")) new_id="a";
//6단계
if(new_id.length()>=16) new_id=new_id.substring(0, 15);
if(new_id.charAt(new_id.length()-1)=='.') new_id=new_id.substring(0, new_id.length()-1);
//7단계
if(new_id.length()<=2) {
while(true) {
if(new_id.length()>=3) break;
new_id+=new_id.charAt(new_id.length()-1);
}
}
return new_id;
}
}
소요시간 : 30분
딱히 설명이 필요 없을 것 같습니다. 그냥 1단계부터 7단계까지 시키는 것만 하면 됩니다!
주석에 1단계부터 7단계까지 있으니 보시면 될 것 같습니다.
1~7단계 중에 제일 어려웠던 게 저는 3단계였습니다...
어떻게 제거할지 생각이 안 나서 총길이의 개수만큼. 를 더해서 만들어주고.
for문을 돌면서 .을 한 개씩 줄여주면서 replace 해주었는데
이 방법 말고도 좋은방법이 있을 거라고 생각합니다! 나중에 알게 되면 업데이트하겠습니다.
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스 2021 KAKAO BLIND RECRUITMENT] 합승 택시 요금 -Java (0) | 2021.01.25 |
---|---|
[프로그래머스 2021 KAKAO BLIND RECRUITMENT ]메뉴 리뉴얼 -Java (0) | 2021.01.25 |
[프로그래머스 2018 KAKAO BLIND RECRUITMENT] n진수 게임 -Java (1) | 2021.01.23 |
[프로그래머스] 행렬의 곱셈 -Java (1) | 2021.01.23 |
[프로그래머스] 올바른 괄호 -Java (1) | 2021.01.22 |
Comments