반응형
문제
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
풀이
다음 정규 표현식을 이용해 “..” 을 찾을 수 있다. "[.]{2,}”
문제의 조건에 맞게 구현을 하면 된다.
코드
java
public class Solution {
public String solution(String new_id) {
new_id = toLowerId(new_id);
new_id = removeSpecialChar(new_id);
new_id = removeContinueDot(new_id);
new_id = removeEdgeDot(new_id);
new_id = ifEmptyThenA(new_id);
new_id = ifLongerThan16(new_id);
new_id = ifShorterThan2(new_id);
return new_id;
}
private String toLowerId(String id) {
return id.toLowerCase();
}
private String removeSpecialChar(String id) {
StringBuilder sb = new StringBuilder();
char[] chars = id.toCharArray();
for (char c : chars) {
if (Character.isAlphabetic(c) || Character.isDigit(c) || c == '-' || c == '_'
|| c == '.') {
sb.append(c);
}
}
return sb.toString();
}
private String removeContinueDot(String id) {
return id.replaceAll("[.]{2,}", ".");
}
private String removeEdgeDot(String id) {
StringBuilder sb = new StringBuilder(id);
while (sb.indexOf(".") == 0) {
sb.deleteCharAt(0);
}
while (sb.length() > 0 && sb.lastIndexOf(".") == sb.length() - 1) {
sb.deleteCharAt(sb.length() - 1);
}
return sb.toString();
}
private String ifEmptyThenA(String id) {
if (id.equals("")) {
return "a";
}
return id;
}
private String ifLongerThan16(String id) {
StringBuilder sb = new StringBuilder(id);
if (sb.length() >= 16) {
sb = new StringBuilder(sb.substring(0, 15));
}
while (sb.length() > 0 && sb.lastIndexOf(".") == sb.length() - 1) {
sb.deleteCharAt(sb.length() - 1);
}
return sb.toString();
}
private String ifShorterThan2(String id) {
StringBuilder sb = new StringBuilder(id);
while (sb.length() <= 2) {
sb.append(sb.charAt(sb.length() - 1));
}
return sb.toString();
}
}
반응형
'프로그래머스' 카테고리의 다른 글
프로그래머스 - n^2 배열 자르기 (0) | 2024.01.10 |
---|---|
프로그래머스 - 방문 길이 (1) | 2024.01.06 |
프로그래머스 - 체육복 (0) | 2022.11.25 |
프로그래머스 - 카카오 프렌즈 컬러링북 (0) | 2022.02.20 |
프로그래머스 - 오픈채팅방 (0) | 2022.02.18 |