알고리즘/프로그래머스

신규 아이디 추천

베리영young 2024. 12. 13. 17:36

한 달 전 쯤 풀었던 거 같은데 이제서야 올리는 코드

 

어려운 건 아닌데, 이런 저런 조건이 있어서 귀찮은 문제

 

import java.util.*;

class Solution {
    //3이상 15이하 길이, 소문자 숫자 - _ . 단, .은 양끝x 연속x
    public String solution(String new_id) {
        
        //1
        new_id = new_id.toLowerCase();
        //2
        for(int i=new_id.length()-1; i>=0; i--) {
            char c = new_id.charAt(i);
            if(c-'0'>=0 && c-'0'<=9) continue;
            if(c-'a'>=0 && c-'a'<26) continue; //
            if(c=='-' || c=='_' || c=='.') continue;
            
            String f = new_id.substring(0, i);
            String s = new_id.substring(i+1);
            
            new_id = f+s;
        }
        //3
        for(int i=new_id.length()-1; i>=1; i--) {
            boolean c = new_id.charAt(i)=='.' ? true : false;
            if(!c) continue;
            
            if(new_id.charAt(i-1)=='.') {
                String f = new_id.substring(0, i);
            String s = new_id.substring(i+1);
            
            new_id = f+s;
            }
        }
        //4
        if(new_id.charAt(0)=='.') 
            new_id = new_id.substring(1);
        if(new_id.length()-1>=0 && new_id.charAt(new_id.length()-1)=='.') 
            new_id = new_id.substring(0, new_id.length()-1);
        //5
        if(new_id.length()==0)
            new_id = "a";
        //6
        if(new_id.length() > 15) 
            new_id = new_id.substring(0, 15);
        if(new_id.length()-1>=0 && new_id.charAt(new_id.length()-1)=='.') 
            new_id = new_id.substring(0, new_id.length()-1);
        //7
        if(new_id.length() <= 2) {
            char c = new_id.charAt(new_id.length()-1);
            
            while(new_id.length() <3) {
                new_id += c;
            }
        }
        
        return new_id;
    }
}