반응형
문제 링크
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()메서드 사용에 대해 정리할 수 있는 기회가 되었다.
정규식 관련 참고 사이트
Java - 정규표현식(String.replaceAll 메서드를 이용한 치환)
정규표현식이란 텍스트에서 원하는 조건과 일치하는 문자열을 찾아내거나, 원하는 조건과 텍스트가 일치하는지 참/거짓 여부를 판단하는 등의 상황에 사용된다. 예를 들어, 여러 사람의 집단중
velog.io
반응형
'Dev Story 💻 > Coding Test' 카테고리의 다른 글
[프로그래머스][JAVA] 2019 카카오 개발자 겨울 인턴십 - 크레인 인형뽑기 게임 (0) | 2022.08.04 |
---|---|
[프로그래머스][JAVA] 2020 카카오 인턴십 - 키패드 누르기 (0) | 2022.08.02 |
[프로그래머스][JAVA] 2021 Dev-Matching: 웹 백엔드 개발자(상반기) - 로또의 최고 순위와 최저 순위 (0) | 2022.08.01 |
[프로그래머스][JAVA] 2021 카카오 채용연계형 인턴십 - 숫자 문자열과 영단어 (0) | 2022.07.31 |
[프로그래머스][JAVA] 2022 KAKAO BLIND RECRUITMENT - 신고 결과 받기 (0) | 2022.07.31 |
댓글