본문 바로가기
알고리즘/PROGRAMMERS

신규 아이디 추천(Lv.1)

by 현대타운301 2024. 3. 21.

 


 

문제 설명

 

 

 

입출력 예시

 

 

요약

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