


-Code
class Solution {
public String solution(String new_id) {
// 소문자 변경
String lowerId = new_id.toLowerCase();
StringBuilder answer = new StringBuilder();
for (char ch : lowerId.toCharArray()) {
// .이 반복될 경우 1개만 저장
if (answer.length() > 0 &&
ch == '.' &&
answer.charAt(answer.length() - 1) == ch
) {
continue;
}
// 영어, 숫자, -_.인경우 추가
if (isOk(ch)) {
answer.append(ch);
}
}
// 처음이 .인 경우 삭제
if (answer.length() > 0 && answer.charAt(0) == '.') {
answer.delete(0, 1);
}
// 마지막이 .인 경우 삭제
if (answer.length() > 0 && answer.charAt(answer.length() - 1) == '.') {
answer.delete(answer.length() - 1, answer.length());
}
// 결과가 비어있는 경우 a 대입
if (answer.length() == 0) answer.append('a');
// 15글자 초과한 경우 자르기
if (answer.length() > 15) {
answer.delete(15, answer.length());
// 마지막이 .인경우 .제거
while (answer.charAt(answer.length() - 1) == '.') {
int idx = answer.length();
answer.delete(idx - 1, idx);
}
}
// 글자수가 2이하인 경우 마지막 글자 3개가 될때까지 추가
if (answer.length() < 3) {
char lastChar = answer.charAt(answer.length() - 1);
while (answer.length() < 3) {
answer.append(lastChar);
}
}
return answer.toString();
}
// 숫자, 영어, 특정 특수 문자만 허용하기 위한 메소드
private boolean isOk(char c) {
if (Character.isAlphabetic(c) || Character.isDigit(c)) {
return true;
}
for (char check : "-_.".toCharArray()) {
if (c == check) {
return true;
}
}
return false;
}
}'Beakjoon&프로그래머스 > Java' 카테고리의 다른 글
| [프로그래머스/Java] 달리기 경주 (0) | 2026.03.17 |
|---|---|
| [백준/Java] 3010번 페그 (0) | 2026.03.17 |
| [백준/Java] 21869번 Maximum Bishop (0) | 2026.03.16 |
| [백준/Java] 17095번 Min-Max Subsequence (0) | 2026.03.15 |
| [백준/Java] 6971번 Nasty Numbers (0) | 2026.03.15 |