반응형
https://programmers.co.kr/learn/courses/30/lessons/72410
쉬워 보이지만 결국에는 정규식을 얼마나 잘 사용하냐를 보는 문제 같습니다.
정규식 사용을 위해서 여러 블로그를 참고하여서 풀게 되었습니다.
package com.ji.test;
import static org.junit.Assert.assertEquals;
import org.junit.jupiter.api.Test;
import com.ji.study.RecommNewId;
public class RecommNewIdTest {
@Test
void test() {
RecommNewId test = new RecommNewId();
assertEquals("bat.y.abcdefghi", test.solution("...!@BaT#*..y.abcdefghijklm"));
assertEquals("z--", test.solution("z-+.^."));
assertEquals("aaa", test.solution("=.="));
assertEquals("123_.def", test.solution("123_.def"));
assertEquals("abcdefghijklmn", test.solution("abcdefghijklmn.p"));
}
}
package com.ji.study;
public class RecommNewId {
public static String solution(String new_id) {
String answer = new_id.toLowerCase(); // 1단계
answer = answer.replaceAll("[^-_.a-z0-9]", ""); // 2단계
answer = answer.replaceAll("[.]{2,}", "."); // 3단계
answer = answer.replaceAll("^[.]|[.]$", ""); // 4단계
if (answer.equals("")) { // 5단계
answer += "a";
}
if (answer.length() >= 16) { // 6단계
answer = answer.substring(0, 15);
answer = answer.replaceAll("[.]$","");
}
if (answer.length() <= 2) { // 7단계
while (answer.length() < 3) {
answer += answer.charAt(answer.length()-1);
}
}
return answer;
}
}
728x90
'[개발관련] > 코테준비' 카테고리의 다른 글
[백준] 1로 만들기 (0) | 2021.06.13 |
---|---|
[백준] 바이러스 (0) | 2021.06.13 |
[프로그래머스] [1차] 캐시 (0) | 2021.06.13 |
동적계획법(Dynamic Programming) (0) | 2021.06.13 |
[프로그래머스] 프린터 (0) | 2021.05.07 |