-
728x90
solution함수 안에 부분 보시면 됩니다!
- 문제에 적혀있는대로, 순서대로 차근차근 나아가면 되는 문제였다.
package com.pro.level1;public class 신규아이디추천 {public static void main(String[] args) {System.out.println(solution("abcdefghijklmn.p"));}public static String solution(String new_id) {// 1단계 : 대소문자 전환new_id = new_id.toLowerCase();// 2단계 : 소문자, 숫자, -, _, .가 아닌 문자 제거StringBuilder sb = new StringBuilder();for (int i = 0; i < new_id.length(); i++) {char a = new_id.charAt(i);if (('a' <= a && a <= 'z') || a == '-' || a == '_' || a == '.' || Character.isDigit(a))sb.append(a);}// 3단계 : . 2번 이상이면 하나만 사용for (int i = 0; i < sb.length(); i++) {char a = sb.charAt(i);if (a == '.') // 자기 뒤에오는 마침표는 모두 제거while (i + 1 < sb.length() && sb.charAt(i + 1) == '.')sb.deleteCharAt(i + 1);}// 4단계 : 맨 앞과 맨 뒤 . 제거if (sb.charAt(0) == '.')sb.deleteCharAt(0);if (sb.length() != 0 && sb.charAt(sb.length() - 1) == '.')sb.deleteCharAt(sb.length() - 1);// 5단계 : 빈 문자열이면, a 대입if (sb.length() == 0)sb.append('a');// 6단계 : 문자 길이는 15자까지만if(sb.length() >= 16) {sb = new StringBuilder(sb.substring(0, 15));if (sb.charAt(sb.length() - 1) == '.') // 맨 뒤 .제거sb.deleteCharAt(sb.length() - 1);}// 7단계 : 2자이하면, 글자 길이 3자가될때까지 마지막 문자 복사if(sb.length() <= 2) {char a = sb.charAt(sb.length()-1);while(sb.length() < 3)sb.append(a);}return sb.toString();}}데롱디롱희희.. (๑′ᴗ‵๑)
'알고리즘 풀이 > 프로그래머스' 카테고리의 다른 글
[level1] 프로그래머스 - 내적(JAVA) (0) 2021.08.25 [level1] 프로그래머스 - 소수만들기(JAVA) (0) 2021.08.25 [level1] 프로그래머스 - 로또의 최고순위와 최저순위(JAVA) (0) 2021.08.25 [level1] 프로그래머스 - 숫자 문자열과 영단어(JAVA) (0) 2021.08.25 [level1] 프로그래머스 - 키패드 누르기(JAVA) (0) 2021.08.25