본문 바로가기
  • Jetpack 알아보기
프로그래머스 - JAVA/Level 1

[JAVA] 프로그래머스 Lv.1 : 신규 아이디 추천

by 새우버거♬ 2021. 6. 2.

🔥 2021 KAKAO BLIND RECRUITMENT

1단계 new_id의 모든 대문자를 대응되는 소문자로 치환합니다.
2단계 new_id에서 알파벳 소문자, 숫자, 빼기(-), 밑줄(_), 마침표(.)를 제외한 모든 문자를 제거합니다.
3단계 new_id에서 마침표(.)가 2번 이상 연속된 부분을 하나의 마침표(.)로 치환합니다.
4단계 new_id에서 마침표(.)가 처음이나 끝에 위치한다면 제거합니다.
5단계 new_id가 빈 문자열이라면, new_id에 "a"를 대입합니다. 6단계 new_id의 길이가 16자 이상이면, new_id의 첫 15개의 문자를 제외한 나머지 문자들을 모두 제거합니다. 만약 제거 후 마침표(.)가 new_id의 끝에 위치한다면 끝에 위치한 마침표(.) 문자를 제거합니다.
7단계 new_id의 길이가 2자 이하라면, new_id의 마지막 문자를 new_id의 길이가 3이 될 때까지 반복해서 끝에 붙입니다.

 

예제:

 

new_id result
"...!@BaT#*..y.abcdefghijklm" "bat.y.abcdefghi"
"z-+.^." "z--"
"=.=" "aaa"
"123_.def" "123_.def"

 

제한 조건:

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

Solution #1

class Solution {
    public String solution(String new_id) {
        String answer = new_id;

        answer = answer
                // 1. 소문자로 치환
                .toLowerCase()
                // 2. 알파벳 소문자, 숫자, 빼기(-), 밑줄(_), 마침표(.) 제외하고 모든 문자 제거
                .replaceAll("[^\\.\\-_0-9a-z]", "")
                // 3. 마침표(.)가 2번 이상 연속된 부분 하나로 치환
                .replaceAll("[.]+", ".");

        // 4. 마침표(.)가 처음이나 끝에 위치한다면 제거
        if (answer.startsWith(".")) answer = answer.substring(1);
        if (answer.endsWith(".")) answer = answer.substring(0, answer.length() - 1);

        // 5. 빈 문자열이라면 "a" 대입
        if (answer.isEmpty()) answer = "a";

        // 6. 16자 이상이면 첫 15개의 문자를 제외한 나머지 제거, 제거 후 마침표(.)가 마지막 위치한다면 마침표 제거
        if (answer.length() >= 16)
            answer =
                    answer.substring(0, 15).endsWith(".") ?
                            answer.substring(0, 14) :
                            answer.substring(0, 15);

        // 7. 길이가 2자 이하라면 마지막 문자를 길이가 3이 될 때까지 반복해서 끝에 추가
        if (answer.length() <= 2) {
            char last = answer.charAt(answer.length() - 1);
            while (answer.length() < 3) {
                answer += last;
            }
        }

        return answer;
    }
}

 

Result #1

 


 

More Algorithm!

 

👇👇

 

github.com/ggujangi/ggu.programmers

 

ggujangi/ggu.programmers

프로그래머스 알고리즘, JAVA. Contribute to ggujangi/ggu.programmers development by creating an account on GitHub.

github.com

 

 

 

출처 : 프로그래머스