프로그래머스 java 신규 아이디 추천

jieun·2022년 8월 12일
0

java 코테 공부

목록 보기
4/17

해결방법

규칙에 맞게 문자열을 바꿔서 출력한다.

활용코드

toLowerCase()

  1. 문자열을 소문자로 치환
new_id=new_id.toLowerCase();

replaceAll()

  1. 문자열의 소문자, 숫자, (-), (_), (.)을 제외하고 모두 공백으로 치환
  2. 문자열의 (.)가 2개 이상 연속된 경우 (.)1개로 치환
  3. 문자열의 (.)가 처음이나 끝에 위치한다면 공백으로 치환
  4. 문자열의 길이가 16이상이라면 0부터 15까지 자르고 (.)가 끝에 위치한다면 공백으로 치환
new_id=new_id.replaceAll("[^0-9a-z-_.]", "");
new_id=new_id.replaceAll("[.]{2,}", ".");
new_id=new_id.replaceAll("^[.]|[.]$", "");
if(new_id.length()>=16) {
	new_id=new_id.substring(0, 15).replaceAll("[.]$", "");
}

replaceAll() 정규식

a.c : abc, a0c , ..
a..c : abbc, a00c , ..
x* : x의 0번 이상 반복
x+ : x의 1번 이상 반복
^x : 문자열이 x로 시작
x$ : 문자열이 x로 끝남
x? : x가 존재할수도, 하지 않을 수도 있음
ex) ab?c : ac, abc 모두 가능
x|y : x 또는 y
ex) (x|y)z : xy 또는 yz 모두 가능
x{n} : x의 n번 반복
x{m,n} : x의 m번 이상 n번 이하 반복
x{n,} : x의 n번 이상 반복
[xy] : x 또는 y 한 문자
[x-z] : x~z 범위 내의 한 문자
[^xy] : x 또는 y를 제외한 한 문자

equals()

  1. 빈 문자열이라면 "a" 대입
if(new_id.equals("")) new_id="a";

charAt

  1. 문자열의 길이가 2이하라면 길이가 3이 될때까지 마지막 문자를 추가
if(new_id.length()<=2){
	for (int i=1; i<3; i++) {
		if(new_id.length()<=i) new_id+=new_id.charAt(new_id.length()-1);
	}
}

전체코드

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,}", ".");
        new_id=new_id.replaceAll("^[.]|[.]$", "");

        if(new_id.equals("")) new_id="a";
        
        if(new_id.length()>=16) {
            new_id=new_id.substring(0, 15).replaceAll("[.]$", "");
        }
        
        if(new_id.length()<=2){
            for (int i=1; i<3; i++) {
                if(new_id.length()<=i) new_id+=new_id.charAt(new_id.length()-1);
            }
        }

        return new_id;
    }
}
profile
개발새발 블로그

0개의 댓글