이끌든지 따르든지 비키든지

Today I Learned/프로그래머스

[프로그래머스] 신규 아이디 추천 - JAVA

SeongHo5 2024. 1. 18. 22:48

프로그래머스 코딩 테스트 연습 문제 -  개인정보 수집 유효기간 / JAVA 풀이 정리

 


 

풀이

 

문제를 보고, 정규 표현식이 바로 떠올랐는데, 필요할 때마다 구글링 해서 사용했어서 규칙이 정확히 기억이 안 났다...

 

정규표현식으로 풀이하면, 깔끔하게 작성할 수 있을 것 같아 규칙을 보면서 작성해 봤습니다.

 


JAVA
public String solution(String new_id) { // 1단계 : 모든 대문자를 소문자로 치환 String id = new_id.toLowerCase(); // 2단계 : 알파벳 소문자, 숫자, 빼기(-), 밑줄(_), 마침표(.)를 제외한 모든 문자를 제거 id = id.replaceAll("[^a-z0-9-_.]", ""); // 3단계 : 마침표(.)가 2번 이상 연속된 부분을 하나의 마침표(.)로 치환 id = id.replaceAll("[.]{2,}", "."); // 4단계 : 처음과 끝에 마침표(.)가 있다면 제거 id = id.replaceAll("^[.]|[.]$", ""); if (id.length() >= 16) { // 길이가 15 이상이라면, 첫 15개 제외 모두 제거 id = id.substring(0, 15); // 제거 후, 4단계 조건에 위배되는지 다시 확인 id = id.replaceAll("[.]$", ""); } else if (id.length() <= 2) { // 빈 문자열이라면 "a" 추가 if (id.isEmpty()) id += "a"; while (id.length() < 3) { // 길이가 3이 될 때까지, 마지막 글자를 이어 붙인다. id += id.charAt(id.length() - 1); } } return id; }

 

 

규칙에서 무엇을 해야 하는지를 차근히 설명해 줘서, 정규 표현식을 몰라도 어렵지 않게 풀 수 있는 문제인 듯하다!!