본문 바로가기
Algorithm/Weekly Solved

[2021 KAKAO] 신규 아이디 추천 - Java코드

https://programmers.co.kr/learn/courses/30/lessons/72410

 

코딩테스트 연습 - 신규 아이디 추천

카카오에 입사한 신입 개발자 네오는 "카카오계정개발팀"에 배치되어, 카카오 서비스에 가입하는 유저들의 아이디를 생성하는 업무를 담당하게 되었습니다. "네오"에게 주어진 첫 업무는 새로

programmers.co.kr

 

문제

 

 

풀이

String 클래스에 기본메소드 사용에 대한 문제이다.

그중에서도 정규표현식을 얼마만큼 아느냐가 코드를 간결하고 깔끔하게 짜는 방법이라 할 수 있겠다.

class Solution {
    public String solution(String new_id){
		new_id = new_id.toLowerCase().replaceAll("[^-_.a-z0-9]", ""); 
		while(new_id.contains("..")) new_id = new_id.replaceAll("\\.\\.", "\\."); 
		if(new_id.startsWith(".")) new_id = new_id.substring(1); 
		if(new_id.equals("")) new_id = "a"; 
		if(new_id.length()>15) new_id = new_id.substring(0,15);  
		if(new_id.endsWith(".")) new_id = new_id.substring(0,new_id.length()-1); 		
		if(new_id.length()<3) for(int i=0;new_id.length()<3;i++) new_id = new_id + new_id.charAt(new_id.length()-1); // 7
		return new_id;
    }
}

나의 풀이는 문자열의 기본메소드 위주로 풀었고 정규표현식은 2,3단계에서 한번씩 사용하였다.

이스케이프 문자에 대해 \\를 붙여 매치시켰는데,

다른사람들의 풀이는 더 많은 정규표현식을 활용한 것 같다.