반응형
안녕하세요.
배당 줍는 다람쥐입니다.
오늘 업로드하는 문제는 프로그래머스 Level 1, 신규 아이디 추천입니다.
그러면 오늘도 문제 풀이 시작하겠습니다.
문제
https://school.programmers.co.kr/learn/courses/30/lessons/72410
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제 내용은 링크 참고 부탁드립니다.
문제풀이
핵심포인트
- 문자열 메서드에 대해서 이해가 중요
- 각 단계 별로 순차적으로 처리 진행
코드
import java.util.*;
class Solution {
public String solution(String new_id) {
String answer = "";
// 7단계의 순차적인 처리 과정
// 7-1. 대문자 -> 소문자
new_id = new_id.toLowerCase();
// 7-2. 소문자, 숫자, 빼기, 밑줄, 마침표를 제외한 모든 문자를 제거한다.
new_id = new_id.replaceAll("[^0-9a-z-_.]", "");
// 7-3. 마침표가 2번 이상 연속된 부분을 하나의 마침표로 치환한다.
new_id = new_id.replaceAll("[.]{2,}", ".");
// 7-4. 마침표가 처음이나 끝에 위치한다면 제거한다.
new_id = new_id.replaceAll("^[.]|[.]$", "");
// 7-5. 빈 문자열이라면, "a"를 대입한다.
if(new_id == null || new_id.isEmpty()) new_id = "a";
// 7-6. 길이가 16자 이상이면, 뒤에 문자는 제거한다. -> 제거 후, 끝문자가 마침표라면, 마침표 문자를 제거한다.
if(new_id.length() >= 16) new_id = new_id.substring(0, 15);
new_id = new_id.replaceAll("[.]$", "");
// 7-7. 길이가 2자 이하라면, 길이가 3이 될 때까지 마지막 문자를 반복해서 끝에 붙입니다.
while(new_id.length() < 3) new_id = new_id + new_id.substring(new_id.length()-1);
answer = new_id;
return answer;
}
}
반응형
'IT > Java' 카테고리의 다른 글
[프로그래머스, Level 1] 나누어 떨어지는 숫자 배열(JAVA) (0) | 2022.08.31 |
---|---|
[프로그래머스, Level 1] 부족한 금액 계산하기(JAVA) (0) | 2022.08.31 |
[프로그래머스, Level 1] 로또의 최고 순위와 최저 순위(JAVA) (0) | 2022.08.01 |
[프로그래머스, Level 2] 위장(JAVA)_Hash (0) | 2021.08.15 |
[프로그래머스, Level 1] 완주하지 못한 선수(JAVA) (0) | 2021.08.11 |