[프로그래머스] [LV1] 신규 아이디 추천

업데이트:

📚 신규 아이디 추천

링크📎 : https://programmers.co.kr/learn/courses/30/lessons/72410

난이도 ⭐️

📖 문제

이미지 이미지 이미지 이미지 이미지

📝 내 풀이

import java.util.*;

class Solution {
    public String solution(String new_id) {
        
        String answer = "";
        
        answer = processOne(new_id);
        answer = processTwo(answer);
        answer = processThree(answer);
        answer = processFour(answer);
        answer = processFive(answer);
        answer = processSix(answer);
        answer = processSeven(answer);
        
        return answer;
    }
    
    public String processOne(String s){
        s = s.toLowerCase();
        return s;
    }

    public String processTwo(String s){
        
        String temp = "";
        
        for(int i = 0; i < s.length(); i++){
            if((s.charAt(i) >= 'a'&& s.charAt(i)<='z')||(s.charAt(i) >= '0'&& s.charAt(i)<='9')) temp += s.charAt(i);
            else if(s.charAt(i)=='-'||s.charAt(i)=='_'||s.charAt(i)=='.')
                temp += s.charAt(i);
        }
        
        return temp;
    }

    public String processThree(String s){
        
        String temp = "";
        
        for(int i = 0; i < s.length(); i++)
            if(s.charAt(i) == '.'){
                if(i >= 1 && s.charAt(i-1) == '.') continue;
                else temp += s.charAt(i);
            }
            else temp += s.charAt(i);
        
        return temp;
    }

    public String processFour(String s){
        String temp = "";
         
        if(s.charAt(0) != '.') temp += s.charAt(0);
        
        for(int i = 1; i < s.length() - 1; i++) temp += s.charAt(i);
        
        if(s.charAt(s.length()-1) != '.') temp += s.charAt(s.length()-1);
        
        return temp;
    }

    public String processFive(String s){
        if(s.isEmpty()) s += "a";
        return s;
    }

    public String processSix(String s){
        String temp = "";
        if(s.length() >= 16) {
            for(int i = 0; i < 14; i++)
                temp += s.charAt(i);
            if(s.charAt(14) != '.') temp += s.charAt(14); 
        }
        
        else return s;
        
        return temp;
    }

    public String processSeven(String s){
        String temp = "";
        
        if(s.length() <= 2){
            for(int i = 0; i < s.length(); i++){
                temp += s.charAt(i);
            }
            for(int i = s.length(); i < 3; i++){
                temp += s.charAt(s.length()-1);
            }
            
        }
        else return s;
        return temp;
    }
}

문제가 너무 길었다..
요구사항 자체가 어려운 건 없었으나.. 깔끔하게 코드를 짜는 법을 생각해내지 못해
조금은 부끄러운 코드가 되었다.

replaceAll()을 활용한 다른 풀이가 있어 첨부해둔다.

📝 다른 풀이

class Solution {
    public String solution(String new_id) {
        String answer = "";
        String temp = new_id.toLowerCase();

        temp = temp.replaceAll("[^-_.a-z0-9]","");
        System.out.println(temp);
        temp = temp.replaceAll("[.]{2,}",".");
        temp = temp.replaceAll("^[.]|[.]$","");
        System.out.println(temp.length());
        if(temp.equals(""))
            temp+="a";
        if(temp.length() >=16){
            temp = temp.substring(0,15);
            temp=temp.replaceAll("^[.]|[.]$","");
        }
        if(temp.length()<=2)
            while(temp.length()<3)
                temp+=temp.charAt(temp.length()-1);

        answer=temp;
        return answer;
    }
}

끝-!

댓글남기기