프로그래머스 코딩 테스트 연습 문제 - 개인정보 수집 유효기간 / JAVA 풀이 정리
풀이
문제를 보고, 정규 표현식이 바로 떠올랐는데, 필요할 때마다 구글링 해서 사용했어서 규칙이 정확히 기억이 안 났다...
정규표현식으로 풀이하면, 깔끔하게 작성할 수 있을 것 같아 규칙을 보면서 작성해 봤습니다.
public String solution(String new_id) {
// 1단계 : 모든 대문자를 소문자로 치환
String id = new_id.toLowerCase();
// 2단계 : 알파벳 소문자, 숫자, 빼기(-), 밑줄(_), 마침표(.)를 제외한 모든 문자를 제거
id = id.replaceAll("[^a-z0-9-_.]", "");
// 3단계 : 마침표(.)가 2번 이상 연속된 부분을 하나의 마침표(.)로 치환
id = id.replaceAll("[.]{2,}", ".");
// 4단계 : 처음과 끝에 마침표(.)가 있다면 제거
id = id.replaceAll("^[.]|[.]$", "");
if (id.length() >= 16) {
// 길이가 15 이상이라면, 첫 15개 제외 모두 제거
id = id.substring(0, 15);
// 제거 후, 4단계 조건에 위배되는지 다시 확인
id = id.replaceAll("[.]$", "");
} else if (id.length() <= 2) {
// 빈 문자열이라면 "a" 추가
if (id.isEmpty()) id += "a";
while (id.length() < 3) {
// 길이가 3이 될 때까지, 마지막 글자를 이어 붙인다.
id += id.charAt(id.length() - 1);
}
}
return id;
}
규칙에서 무엇을 해야 하는지를 차근히 설명해 줘서, 정규 표현식을 몰라도 어렵지 않게 풀 수 있는 문제인 듯하다!!
'Today I Learned > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 개인정보 수집 유효기간 - JAVA (0) | 2024.01.18 |
---|---|
[프로그래머스] 숫자 짝꿍 - JAVA (0) | 2023.09.25 |
[프로그래머스] 도둑질 - JAVA (0) | 2023.09.24 |
[프로그래머스] 금과 은 운반하기 - JAVA (0) | 2023.09.22 |
[프로그래머스] 문자열 밀기 - JAVA (0) | 2023.09.21 |