엄지월드

72410 신규 아이디 추천 본문

알고리즘

72410 신규 아이디 추천

킨글 2022. 9. 9. 17:39

문제 해석

- 주어진 조건들에 맞게 계속 필터해주면 된다.

 

헷갈렸던 점

- 어려운 문제는 아닌데, 조건에 맞게 필터해주는게 까다로웠다.

- if(s.length() > 0 && s.charAt(s.length()-1) == '.') 에서 ""인 경우가 있어서 에러가 나가지고 s.length > 0을 추가해주었다. 

 

소스 코드

import java.util.*;

public class 72410 {
    public static void main(String[] args) {
//        solution("...!@BaT#*..y.abcdefghijklm");
//        solution("z-+.^.");
        solution("=.=");
        solution("123_.def");
        solution(	"abcdefghijklmn.p");
    }
    public static String solution(String new_id) {
        String answer = "";
        String s = new_id;
        s = s.toLowerCase();
        StringBuffer sb = new StringBuffer();

        for(int i=0; i<s.length(); i++){
            char c = s.charAt(i);
            int ascii = (int)c;
            if(c == '-' || c == '_' || c == '.'){
                sb.append(c);
            }else if(ascii >= 48 && ascii <= 57){
                // 숫자
                sb.append(c);
            }else if(ascii >= 65 && ascii <= 90){
                // 대문자
                sb.append(c);
            }else if(ascii >= 97 && ascii <= 122){
                // 소문자
                sb.append(c);
            }
        }

        // 마침표가 2번 이상 연속된 부분을 하나의 마침표(.)로 치환합니다.
        s = String.valueOf(sb);
        while(true){
            if(!s.contains("..")) break;
            s = s.replace("..", ".");
        }

        // 마침표가 처음이나 끝에 위치한다면 제거합니다.
        if(s.charAt(0) == '.') {
            s = s.substring(1, s.length());
        }
        if(s.length() > 0 && s.charAt(s.length()-1) == '.')
            s = s.substring(0, s.length()-1);

        // 빈 문자열이라면 "a"를 대입합니다.
        if(s.equals(""))
            s = s +"a";
        // 길이가 16이상이면 15자리까지만 합니다.
        if(s.length() > 15)
            s = s.substring(0, 15);
        // 만약 제거 후 마침표가 끝에 위치한다면 끝에 위치한 마침표 문자를 제거합니다.
        if(s.charAt(s.length()-1) == '.')
            s = s.substring(0, s.length()-1);

        while(true){
            if(s.length() > 2) break;

            s = s + s.charAt(s.length()-1);
        }
        System.out.println(s);

        return answer;
    }
}

'알고리즘' 카테고리의 다른 글

PGM 118667 두 큐 합 같게 만들기  (0) 2022.09.13
42862 체육복  (1) 2022.09.11
68935 진법 뒤집기  (0) 2022.09.09
백준 1967 트리의 지름(DFS)  (0) 2022.09.06
성격 유형 검사하기 java  (0) 2022.09.04
Comments