프로그래머스 신규 아이디 추천 java
2021. 2. 5. 13:47
문제 소개 programmers.co.kr/learn/courses/30/lessons/72410
내용
1단계 new_id의 모든 대문자를 대응되는 소문자로 치환합니다.
2단계 new_id에서 알파벳 소문자, 숫자, 빼기(-), 밑줄(_), 마침표(.)를 제외한 모든 문자를 제거합니다.
3단계 new_id에서 마침표(.)가 2번 이상 연속된 부분을 하나의 마침표(.)로 치환합니다.
4단계 new_id에서 마침표(.)가 처음이나 끝에 위치한다면 제거합니다.
5단계 new_id가 빈 문자열이라면, new_id에 "a"를 대입합니다.
6단계 new_id의 길이가 16자 이상이면, new_id의 첫 15개의 문자를 제외한 나머지 문자들을 모두 제거합니다. 만약 제거 후 마침표(.)가 new_id의 끝에 위치한다면 끝에 위치한 마침표(.) 문자를 제거합니다.
7단계 new_id의 길이가 2자 이하라면, new_id의 마지막 문자를 new_id의 길이가 3이 될 때까지 반복해서 끝에 붙입니다.
입력
new_id는 길이 1 이상 1,000 이하인 문자열입니다.
new_id는 알파벳 대문자, 알파벳 소문자, 숫자, 특수문자로 구성되어 있습니다.
new_id에 나타날 수 있는 특수문자는 -_.~!@#$%^&*()=+[{]}:?,<>/ 로 한정됩니다.
출력
새로운 아이디 출력
해결 방법
아이디어
n이 1,000이다. 주어진대로 1~7단계별로 코딩하여 해결하였다.
실제 풀이 코드
public class Solution {
public String solution(String new_id) {
String answer = "";
new_id = new_id.toLowerCase(); // 1단계
new_id = new_id.replaceAll("[^a-zA-Z0-9-_.]", ""); // 2단계
new_id = new_id.replaceAll("[.]+", "."); // 3단계
if (new_id.charAt(0) == '.') new_id = new_id.substring(1); // 4단계
if (new_id.length() > 0 && new_id.charAt(new_id.length() - 1) == '.')
new_id = new_id.substring(0, new_id.length() - 1);
if (new_id.equals("")) new_id = "a"; // 5단계
if (new_id.length() > 15) new_id = new_id.substring(0, 15); // 6단계
while (new_id.charAt(new_id.length() - 1) == '.') new_id = new_id.substring(0, new_id.length() - 1);
StringBuilder sb = new StringBuilder(new_id); // 7단계
while (sb.length() < 3) sb.append(sb.charAt(sb.length() - 1));
answer = sb.toString();
return answer;
}
}
결과
'알고리즘 문제 > 백준' 카테고리의 다른 글
프로그래머스 순위 검색 java (0) | 2021.02.05 |
---|---|
프로그래머스 메뉴 리뉴얼 java (0) | 2021.02.05 |
백준 11437 LCA java (0) | 2021.02.05 |
백준 10942 펠린드롬? java (0) | 2021.02.03 |
백준 10775 공항 java (0) | 2021.02.01 |