🔗 문제 링크
[프로그래머스] 신규 아이디 추천 / 2021 KAKAO BLIND RECRUITMENT
📝 풀이 과정
문제를 보고 정규식을 활용할 수 있는 문제라고 생각해 정규식을 사용하기로 했다.
조건을 차례대로 보면,
1번은 toLowerCase()
를 사용해 문자열을 소문자 형태로 변경이 가능하다
2번부터 4번까지는 replaceAll(regex, replacement)
를 사용했는데 regex
에 변경하고자하는 정규식을 입력하고 replacement
에 변경할 문자열을 넣으면 된다. 자바에서 문자열 관련 함수는 대부분 기존 문자열을 변경하지 않고 변경된 문자열을 반환하는 형태이기 때문에 체이닝(Chaining)을 활용해 계속 함수를 붙여가며 작성해주었다.
(참고: [Java] 정규식 문법 정리(Regex))
6번의 경우 문자열의 길이가 15보다 클 경우 15로 자르고 끝에 점이 붙었다면 replaceAll
을 통해 제거해주었다.
마지막으로 길이가 3보다 작을 경우 마지막 문자열을 반복해 붙여주기 위해 str.repeat(count)
를 사용했다. str.repeat(count)
을 사용하면 str
이 count만큼 반복된 문자열이 나오기 때문에 3과의 차이만큼 생성해 붙여주었다(java 11 이상부터 사용가능)
💻 코드
class Solution {
public String solution(String new_id) {
new_id = new_id.toLowerCase() // 1번
.replaceAll("[^\\w-\\.]", "") // 2번
.replaceAll("[\\.]{2,}", ".") // 3번
.replaceAll("^\\.|\\.$", ""); // 4번
if (new_id.length() == 0) new_id = "a"; // 5번
if (new_id.length() > 15)
new_id = new_id.substring(0, 15).replaceAll("\\.$",""); // 6번
if (new_id.length() <= 2)
new_id += new String(new_id.charAt(new_id.length() - 1) + "").repeat(3 - new_id.length()); // 7번
return new_id;
}
}
'알고리즘 풀이 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 수식 최대화 / 2020 카카오 인턴십 - JAVA (0) | 2021.02.02 |
---|---|
[프로그래머스] 키패드 누르기 / 2020 카카오 인턴십 - JAVA (0) | 2021.02.02 |
[프로그래머스] 파일명 정렬 / 2018 KAKAO BLIND RECRUITMENT(3차) - JAVA (0) | 2021.01.25 |
[프로그래머스] n진수 게임 / 2018 KAKAO BLIND RECRUITMENT(3차) - JAVA (0) | 2021.01.25 |
[프로그래머스] 압축 / 2018 KAKAO BLIND RECRUITMENT(3차) - JAVA (0) | 2021.01.25 |