학습/프로그래머스
[프로그래머스] 신규 아이디 추천(java)
태기
2023. 2. 15. 17:04
문제
https://school.programmers.co.kr/learn/courses/30/lessons/72410?language=java
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
나의 풀이
class Solution {
public String solution(String new_id) {
new_id = new_id.toLowerCase();
new_id = new_id.replaceAll("[^a-z0-9-_.]", "");
if (new_id.length() != 0) {
char[] char_new_id = new_id.toCharArray();
StringBuilder sb = new StringBuilder();
boolean dotCheck = false;
for (char c : char_new_id) {
if (dotCheck && c == '.') {
continue;
}
dotCheck = c == '.' ? true : false;
sb.append(c);
}
new_id = sb.toString();
String firstStr = new_id.substring(0, 1);
String lastStr = new_id.substring(new_id.length() - 1, new_id.length());
if (firstStr.equals(".")) {
new_id = new_id.substring(1, new_id.length());
}
if (new_id.length() != 0 && lastStr.equals(".")) {
new_id = new_id.substring(0, new_id.length() - 1);
}
}
if (new_id.length() == 0) {
new_id = "a";
}
if (new_id.length() > 15) {
new_id = new_id.substring(0, new_id.substring(14, 15).equals(".") ? 14 : 15);
}
if (new_id.length() < 3) {
String lastStr2 = new_id.substring(new_id.length() - 1, new_id.length());
while (new_id.length() < 3) {
new_id += lastStr2;
}
}
return new_id;
}
}
O(n), 선형