[프로그래머스] 신규아이디추천 JAVA

AMUD·2022년 8월 8일
0

Algorithm

목록 보기
23/78

문제


문제링크

접근

  • 문자열에 대해 이것저것 연산해보는 문제이다.
  • 정규식을 이용해서 풀이하면 매우 간단하다
  • if문보다 삼항연산이 더 시간이 짧기 때문에 간단한 조건은 최대한 삼항연산자를 쓰려고 하는데 오히려 가독성이 떨어진 것 같기도 하다

소스 코드

class Main {
    public static void main(String[] args) throws Exception {
        String new_id = "...!@BaT#*..y.abcdefghijklm";

        Solution sol = new Solution();
        System.out.println("result : " + sol.solution(new_id));
    }
}


class Solution {
    public String solution(String new_id) {
        String answer = new_id;

        answer = answer.toLowerCase();

        answer = answer.replaceAll("[^a-z0-9-_.]", "");

        while (answer.contains("..")) {
            answer = answer.replace("..", ".");
        }

        answer = answer.length() < 1? answer : answer.substring(0, 1).equals(".") ? answer.substring(1) : answer;
        answer = answer.length() < 1? answer : answer.substring(answer.length()-1, answer.length()).equals(".") ? answer.substring(0, answer.length()-1) : answer;

        answer = answer.equals("") ? "a" : answer;

        answer = answer.length() >= 16 ? answer.substring(0, 15) : answer;
        answer = answer.length() != 15 ? answer
                : answer.substring(14, 15).equals(".") ? answer.substring(0, 14) : answer;

        answer = answer.length() == 1? answer + answer + answer : answer.length() == 2? answer + answer.substring(1, 2) : answer;

        return answer;
    }
}
profile
210's Velog :: Ambition Makes Us Diligent

0개의 댓글