CodingTest/Programmers

[Programmers] 신규 아이디 추천

창브로 2025. 5. 14. 19:14

[문제 링크]

https://school.programmers.co.kr/learn/courses/30/lessons/72410

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

[풀이 과정]

그냥 문제 그대로 구현하면 된다.

 

[코드]

class Solution {
    public String solution(String new_id) {
        String answer = "";
        
        // 1단계
        new_id = new_id.toLowerCase();
        
        char[] cArr = new_id.toCharArray();
        
        // 2단계
        for(int i = 0; i < cArr.length; i++) {
            char c = cArr[i];
            
            if((c >= 'a' && c <= 'z') || (c >= '0' && c <= '9') ||
               c == '-' || c == '_' || c == '.') {
                answer += c;
            }
        }
        
        
        // 3단계
        while(answer.contains("..")) {
            answer = answer.replace("..", ".");
        }
        
        
        // 4단계
        if(answer.startsWith(".")) {
            answer = answer.substring(1);
        }
        
        if(answer.endsWith(".")) {
            answer = answer.substring(0, answer.length() - 1);
        }
        
       
        // 5단계
        if(answer.equals("")) {
            answer = "a";
        }
        
        // 6단계
        if(answer.length() >= 16) {
            answer = answer.substring(0,15);
        }
        
        while(answer.substring(answer.length()-1).equals(".")) {
            answer = answer.substring(0, answer.length()-1);
        }
        
        // 7단계
        while(answer.length() <= 2) {
            String s = answer.substring(answer.length()-1);
            answer += s;
        }
       
        return answer;
    }
}

[회고]

구현 과정에서 자바 문자열에 대한 문법을 더욱더 정확하게 알 수 있었습니다.

 

 

 

 

질문과 피드백은 언제나 환영입니다.

감사합니다.