[Java] 프로그래머스 : 신규 아이디 추천

🤔 문제

🔗

신규 유저가 입력한 아이디를 나타내는 new_id가 매개변수로 주어질 때, "네오"가 설계한 7단계의 처리 과정을 거친 후의 추천 아이디를 return 하도록 solution 함수를 완성해 주세요.

제한사항

  • new_id는 길이 1 이상 1,000 이하인 문자열입니다.
  • new_id는 알파벳 대문자, 알파벳 소문자, 숫자, 특수문자로 구성되어 있습니다.
  • new_id에 나타날 수 있는 특수문자는 -_.~!@#$%^&*()=+[{]}:?,<>/ 로 한정됩니다.

👊 풀이과정

매개변수로 아이디가 들어오면 다음 조건에 맞게 아이디를 변경해 리턴하는 메서드를 작성해야 한다.

String answer =
	new_id.toLowerCase()
	.replaceAll("[^a-z0-9._-]","")	// 사용불가문자 제거
	.replaceAll("[.]{2,}",".")		// .이 2개 이상 연속되면 .로 치환
	.replaceAll("^[.]|[.]$","");	// 문자열 가장자리가 .인 경우 제거

정규식을 사용하면 쉽게 풀 수 있는 문제이다.

💻 소스코드

public class 프로그래머스_2021카카오블라인드신규채용_신규아이디추천 {

	public static String solution2(String new_id) {
		String answer =
        	new_id.toLowerCase().replaceAll("[^a-z0-9._-]","")
			.replaceAll("[.]{2,}",".")
			.replaceAll("^[.]|[.]$","");

		if(answer.length()==0) return "aaa";

		while(answer.length()<3) {
			answer += answer.charAt(answer.length()-1);
		}
		if(answer.length()>15) answer = answer.substring(0,15).replaceAll("[.]$","");

		return answer;
	}
}