728x90
https://programmers.co.kr/learn/courses/30/lessons/72410
코딩테스트 연습 - 신규 아이디 추천
카카오에 입사한 신입 개발자 네오는 "카카오계정개발팀"에 배치되어, 카카오 서비스에 가입하는 유저들의 아이디를 생성하는 업무를 담당하게 되었습니다. "네오"에게 주어진 첫 업무는 새로
programmers.co.kr
두가지 방식으로 풀었다.
첫번째는 if문을 잔뜩 사용했고, 두번째는 정규식을 사용해 깔끔하게 풀었다.
이 기회를 통해 정규식을 어떻게 사용하는지 조금이나마 알 수 있었다.
if문 사용 풀이
public class recommend_id {
public static String solution(String new_id) {
String answer;
answer = new_id.toLowerCase();
char[] step1_arr = answer.toCharArray();
StringBuilder step2 = new StringBuilder();
for(char c : step1_arr) {
if((c >= 'a' && c <= 'z') || (c >= '0' && c <= '9') || c == '_' || c == '.' || c == '-')
step2.append(c);
}
answer = step2.toString();
while(answer.contains("..")) answer = answer.replace("..", ".");
if(answer.startsWith(".")) answer = answer.substring(1);
if(answer.endsWith(".")) answer = answer.substring(0, answer.length() - 1);
if(answer.length() == 0) answer = "a";
if(answer.length() >= 16) {
answer = answer.substring(0, 15);
}
if(answer.endsWith(".")) answer = answer.substring(0, answer.length() - 1);
while(answer.length() < 3) {
answer += answer.charAt(answer.length() - 1);
}
return answer;
}
}
정규식 사용 풀이
public class recommend_id_정규식 {
public static String solution(String new_id){
String id = new_id.toLowerCase();
id = id.replaceAll("[^-_.a-z0-9]", "");
id = id.replaceAll("[.]{2,}", ".");
id = id.replaceAll("^[.]|[.]$", "");
if(id.equals(""))
id += "a";
if(id.length() >= 16) {
id = id.substring(0, 15);
id = id.replaceAll("[.]$", "");
}
while(id.length() < 3)
id += id.charAt(id.length() - 1);
return id;
}
}728x90
'알고리즘 > 프로그래머스' 카테고리의 다른 글
| 프로그래머스 키패드 누르기 자바 풀이 (0) | 2022.04.14 |
|---|---|
| 프로그래머스 숫자 문자열과 영단어 자바 풀이 (0) | 2022.04.14 |
| 프로그래머스 로또의 최고 순위와 최저 순위 (0) | 2022.04.14 |
| 프로그래머스 신고 결과 받기 자바 풀이 (0) | 2022.04.14 |
| 프로그래머스 N-Queen 자바 풀이 (0) | 2022.04.10 |