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

병찬·2022년 7월 27일
0

프로그래머스

목록 보기
52/52
post-thumbnail

문제📝


풀이💡

  • 1단계는 toLowerCase()를 통해서 소문자로 치환해준다.
  • 2단계는 replaceAll()를 통해서 필요한 문자들을 제외한 것들을 제거한다.
  • 3단계는 contains()로 ".."이 있는지 확인하고 replace()를 통해서 치환해준다.
  • 4단계는 마침표가 처음일 때와 끝일 때를 구분한다음 substring()을 통해서 제거한다.
  • 5단계는 length()를 이용해서 문자열의 길이를 확인하고 빈 문자열이면 "a"를 대입한다.
  • 6단계는 length()substring()를 활용해서 문자들을 제거한다.
  • 7단계는 문자열의 길이를 확인하고 charAt()를 활용해서 문자를 추가해준다.

코드💻

/*
 * 프로그래머스 Lv1 - 신규 아이디 추천
 * 문제링크: https://programmers.co.kr/learn/courses/30/lessons/72410
 * 정확성 테스트 케이스 26개 중 26개 성공
 * 총점 100.0
*/

class Solution {
    public String solution(String new_id) {
    	
        String answer = "";
     
        // 1단계 - 대문자들 소문자로 치환
		new_id = new_id.toLowerCase();
	
		// 2단계 - 알파벳 소문자, 숫자, 빼기(-), 밑줄(_), 마침표(.)를 제외한 모든 문자를 제거
		new_id = new_id.replaceAll("[^a-z0-9-_.]","");
		
		// 3단계 - 마침표(.)가 2번 이상 연속된 부분을 하나의 마침표(.)로 치환
		new_id = new_id.toString().replace("..", ".");
        while (new_id.contains("..")) {
        	new_id = new_id.replace("..", ".");
        }
        
        // 4단계 - 마침표(.)가 처음일 때 제거
        if (new_id.length() > 0) {
            if (new_id.charAt(0) == '.') {
                new_id = new_id.substring(1, new_id.length());
            }
        }

        // 4단계 - 마침표(.)가 끝일 때 제거
        if (new_id.length() > 0) {
            if (new_id.charAt(new_id.length() - 1) == '.') {
                new_id = new_id.substring(0, new_id.length() - 1);
            }
        }
        
        // 5단계 - 빈 문자열이라면, new_id에 "a"를 대입
        if (new_id.length() == 0) {
            new_id = "a";
        }
        
        // 6단계 - new_id의 길이가 16자 이상이면, new_id의 첫 15개의 문자를 제외한 나머지 문자들을 모두 제거
     
        if (new_id.length() >= 16) {
            new_id = new_id.substring(0, 15);
        }
        // 6단계 - 만약 제거 후 마침표(.)가 new_id의 끝에 위치한다면 끝에 위치한 마침표(.) 문자를 제거
        if (new_id.charAt(new_id.length() - 1) == '.') {
            new_id = new_id.substring(0, new_id.length() - 1);
        }
        
        // 7단계 - new_id의 길이가 2자 이하라면, new_id의 마지막 문자를 new_id의 길이가 3이 될 때까지 반복해서 끝에 추가
        if (new_id.length() <= 2) {
            for (int i = new_id.length(); i < 3; i++) {
                new_id = new_id += new_id.charAt(new_id.length() - 1);
            }
        }
        return new_id;
    }
}

결과😎


느낀점👨‍💻

생각보다 지문이 긴 것에 비해서 문제에서 요구한 것은 생각보다 간단했다. 단계별로 요구한 것만 충족하면 되는것이어서 가볍게 해결할 수 있었다.


Sinbmil의 알고리즘 문제 코드

-> https://github.com/Sinbmil/Algorithm-Study

profile
코딩을 열심히 하고 있습니다:)

0개의 댓글

관련 채용 정보