본문 바로가기
Dev Story 💻/Coding Test

[프로그래머스] [JAVA] 2021 KAKAO BLIND RECRUITMENT - 신규 아이디 추천

by 몽테 2022. 7. 31.
반응형

 

문제 링크

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

나의 답

 

class Solution {
    public String solution(String new_id) {
        String answer = new_id.toLowerCase(); //1 전부 소문자로
        int minLength = 3;
        int maxLength = 15;
        
        answer = answer.replaceAll("[^a-z0-9-_.]", "");//2 소문자-_.제외 전부 제거
        answer = answer.replaceAll("[.]{2,}", ".");   //3 연속적인 마침표 한개로
        answer = answer.replaceAll("^[.]|[.]$", ""); //4 마침표로 시작하거나 끝나면 제거
        
        if(answer.equals("")){
            answer = "a";
        }//5 빈 문자열일 경우 a로 치환
        
        if(answer.length() > maxLength){
            answer = answer.substring(0, 15);
            answer = answer.replaceAll("[.]$", "");
        }//6 문자열 길이 16이상이면 15번째 문자 뒤는 자른다. 마지막이 마침표면 제거
       
       if(answer.length() < minLength){
            while(answer.length() < minLength){
                answer += answer.substring(answer.length()-1);
            }
        }//7 문자열이 3미만일 경우 길이3이 될때까지 마지막 문자를 추가한다
        
        return answer;
    }
    
}

 

편하게 짤만한게 정규식 밖에 떠오르지 않았다.

정규식 관련해서 정리도 좀 되었고, replaceAll()메서드 사용에 대해 정리할 수 있는 기회가 되었다.

 

정규식 관련 참고 사이트

https://velog.io/@minji/Java-%EC%A0%95%EA%B7%9C%ED%91%9C%ED%98%84%EC%8B%9DString.replaceAll-%EB%A9%94%EC%84%9C%EB%93%9C%EB%A5%BC-%EC%9D%B4%EC%9A%A9%ED%95%9C-%EC%B9%98%ED%99%98

 

Java - 정규표현식(String.replaceAll 메서드를 이용한 치환)

정규표현식이란 텍스트에서 원하는 조건과 일치하는 문자열을 찾아내거나, 원하는 조건과 텍스트가 일치하는지 참/거짓 여부를 판단하는 등의 상황에 사용된다. 예를 들어, 여러 사람의 집단중

velog.io

 

반응형

댓글