Algorithm & SQL/Programmers
[Programmers Lv.1 / Java] 신규 아이디 추천
김룹
2024. 3. 25. 15:45
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
👇 내가 작성한 코드
import java.util.*;
class Solution {
public String solution(String new_id) {
String answer = new_id.toLowerCase();
answer = answer.replaceAll("[^-_.a-z0-9]", ""); // 2단계
answer = answer.replaceAll("[.]{2,}", "."); // 3단계
answer = answer.replaceAll("^[.]|[.]$", ""); // 4단계
// 5단계
if(answer.equals("")) answer += "a";
// 6단계
if(answer.length() >= 16) {
answer = answer.substring(0, 15);
answer = answer.replaceAll("[.]$", "");
}
// 7단계
if(answer.length() <= 2) {
while(answer.length() < 3) answer += answer.charAt(answer.length() - 1);
}
return answer;
}
}
느낀 점 및 정리 ✍️
1. 단계 별로 진행하였고, replaceAll과 정규표현식을 사용하였다.
2. [^-_.a-z0-9] ^ 다음에 오는 정규표현식이 아닌 문자들을 공백으로 바꿔주었다.
3. {} 는 문자가 나오는 횟수. {2,} 은 적어도 2번 나온다는 것을 의미한다
4. ^[.]|[.]$ 는 .으로 시작 or 끝나는 것을 의미함
5. 조금만 안해도 까먹는 정규표현식 ㅠ 달달 외워야겠다.... 너무 편하다 !