문제 설명
입출력 예시
요약
1단계 ~ 7단계에 맞게 new_id 수정하기
풀이 및 코드 리뷰
접근 방식
정규화를 통해 조건에 맞게 수정한다.
소스코드
import java.util.*;
class Solution {
public String solution(String new_id) {
String answer = "";
answer = new_id.toLowerCase(); // 1단계. 대문자를 소문자로 변경
answer = answer.replaceAll("[^a-z0-9-_.]", ""); // 2단계. 영어소문자, 숫자, '-', '_', '.' 외에 전부 제거
answer = answer.replaceAll("[..]+", "."); // 3단계. 2개 이상의 온점('.')을 하나로 변경
if(answer.startsWith(".")) {
answer = answer.substring(1); // 4-1단계. 맨 앞의 온점('.') 제거
}
if(answer.endsWith(".")) {
answer = answer.substring(0, answer.length()-1); // 4-2단계. 맨 앞의 온점('.') 제거
}
if(answer.isBlank()) {
answer += "a"; // 5단계. 공백이라면 'a'로 채우기
}
if(answer.length() > 15) {
answer = answer.substring(0, 15); // 6-1단계. 15자로 자르기
if(answer.endsWith(".")) {
answer = answer.substring(0, 14); // 6-2단계. 자르고 난 후 맨 끝에 위치한 온점('.') 제거
}
}
while(answer.length() < 3) {
answer += answer.substring(answer.length()-1); // 7단계. 3글자 미만인 경우 맨 끝의 문자로 채우기
}
return answer;
}
}
* refs
https://www.youtube.com/watch?v=KGmuGWMzXx8&list=PLlV7zJmoG4XI9VguUVNMu3pCjssb4aR_0&index=5
'알고리즘 > PROGRAMMERS' 카테고리의 다른 글
키패드 누르기(Lv.1) (0) | 2024.03.21 |
---|---|
성격 유형 검사하기(Lv.1) (0) | 2024.03.21 |
메뉴 리뉴얼(Lv.2) (2) | 2024.03.19 |
개인정보 수집 유효기간(Lv.1) (1) | 2024.03.19 |
신고 결과 받기(Lv.1) (0) | 2024.03.19 |