다희의 코딩 성장일기

[프로그래머스] level1. 신규 아이디 추천 (자바 JAVA) 본문

Algorithm/프로그래머스

[프로그래머스] level1. 신규 아이디 추천 (자바 JAVA)

ilmiodiario 2021. 8. 19. 16:56

[ 문제 ]  [프로그래머스] level1. 신규 아이디 추천 (자바 JAVA)

 

문제 링크 : https://programmers.co.kr/learn/courses/30/lessons/72410?language=java 

 

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

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

programmers.co.kr

 


# 접근 방법 및 풀이 

 

  • 자바의 문자열 정규식을 알면 간단히 풀 수 있는 문제다.
  • 정규식은 처음 써보는데 인터넷에 찾아가면서 풀었다. replaceAll과 replace의 차이점을 알아야한다.
  • 예시로, String.replaceAll("[0-9]", ""); 0부터9가 포함된 문자를 ""빈칸으로 바꿀 수도 있고,
  • String.replaceAll("[^0-9]", ""); 이렇게 앞에 ^표시를 하면 0~9가 아닌 문자들을 ""빈칸으로 바꾼다는 의미가 된다.
  • 문제에선 new_id = new_id.replaceAll("[^0-9a-z._-]", ""); 0~9의 숫자, a~z 소문자, . _ - 의 문자들을 제외한건 제거한다고 했으므로 다음과 같이 표현했다.
  • 또 .이 2개이상 있다면 . 하나로 표현하라고 했는데 이부분은 new_id = new_id.replaceAll("[.]{2,}", "."); 이렇게 표현해주면 된다. 

# 주의할 점 

 

  • 딱히 없음

 

JAVA 코드
class Solution {
    public String solution(String new_id) {
       	new_id = new_id.toLowerCase();
		new_id = new_id.replaceAll("[^0-9a-z._-]", "");
		new_id = new_id.replaceAll("[.]{2,}", ".");
		if(new_id.charAt(0)=='.') {
			new_id = new_id.substring(1,new_id.length());
		}
		if(new_id.length() > 0 && new_id.charAt(new_id.length()-1)=='.')
			new_id = new_id.substring(0, new_id.length()-1);
		if(new_id.length() == 0)
			new_id += "a";
		if(new_id.length() >= 16) {
			new_id = new_id.substring(0, 15);
			if(new_id.charAt(14) == '.')
				new_id = new_id.substring(0, 14);
		}
		if(new_id.length() <= 2) {
			String s = new_id.substring(new_id.length()-1);
			while(new_id.length() < 3) {
				new_id += s;
			}
		}
        return new_id;
    }
}

 

 

 

REVIEW

Comments