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

daily_study_78·2021년 11월 4일
0

알고리즘

목록 보기
4/11

문제 링크

https://programmers.co.kr/learn/courses/30/lessons/82612


문제


해결 과정

  • 단계별로 진행하면 됨

유의사항

  • replace, substring와 같이 값을 갱신하는 과정에세 새로운 값으로 갱신해줘야함(answer = )
  • java 문자열에 문자추가 방법
    • Java +연산자를 사용하여 문자열에 문자 추가
    • Java StringBuilder.append()를 사용하여 문자열에 문자 추가
    • Java substring()메서드를 사용하여 문자열에 문자 추가
  • 문자열에서 하나의 문자 가지고오기
    • temp[index]
    • temp.charAt(index)
  • substring 사용 방법

최종 코드

public class Solution {
    public String solution(String new_id) {
        
        // 1단계
        String id = new_id.toLowerCase();
        
        // 2단계
        String answer = "";
        for (int i=0; i<id.length(); i++) {
            if ((id.charAt(i) >= 'a' && id.charAt(i) <= 'z') || (id.charAt(i) >= '0' && id.charAt(i) <= '9') || id.charAt(i) == '-' || id.charAt(i) == '_' || id.charAt(i) == '.') {
                answer += id.charAt(i);
            }
        }
        
        // 3단계        
        while (answer.contains("..")) {
            answer = answer.replace("..", ".");  // answer = 을 붙여줘야 먹힘
        }
        
        // 4단계
        if (answer.length() > 0) {
            if (answer.charAt(0) == '.') {
            answer = answer.substring(1);
            }
        }
        
        if (answer.length() > 0) {
            int len = answer.length();
            if (answer.charAt(len-1) == '.') {
                answer = answer.substring(0, len-1);
            }
        }
        
        // 5단계
        if (answer.equals("")) {  // 문자열 일치여부는 .equals()
            
            answer += "a";
        }
        
        // 6단계
        if (answer.length() >= 16) {
            answer = answer.substring(0, 15);
            
            if (answer.charAt(answer.length()-1) == '.') {
                answer = answer.substring(0, answer.length()-1);
            }
        }
        
        // 7단계
        if (answer.length() <= 2) {
            char add_word = answer.charAt(answer.length()-1);
            System.out.println(add_word);
            while (answer.length() < 3) {
                answer += add_word;
            }
        }
        
        return answer;
    }
}

0개의 댓글

관련 채용 정보