프로그래머스 신규 아이디 추천(미완)

Sorbet·2021년 2월 24일
0

코테

목록 보기
3/35

문제링크 : https://programmers.co.kr/learn/courses/30/lessons/72410

푸는중


import java.util.*;

class Solution {

    public static void main(String[] args) {
        Solution s = new Solution();
        tester(new String("...!@BaT#*..y.abcdefghijklm"	),new String("bat.y.abcdefghi"),s);
        tester(new String("z-+.^."	),new String("z--"),s);
        tester(new String("=.="	),new String("aaa"),s);
        tester(new String("123_.def"),new String("123_.def"),s);
        tester(new String("abcdefghijklmn.p"),new String("abcdefghijklmn"),s);
    }

    public static void tester(String new_id, String result, Solution s)  {
        if(result.equals(s.solution(new_id))) {
            System.out.println("OK");
        }
        else {
            System.out.println("NG");
        }

    }

    //fp로 풀면 딱인데
    public String solution(String new_id) {
        String answer = "";

        answer = stg1(new_id);
        answer = stg2(answer);
        answer = stg3(answer);
        answer = stg4(answer);
        answer = stg5(answer);
        answer = stg6(answer);
        answer = stg7(answer);

        return answer;
    }

    private static String stg1(String in) {
        String ret = "";
        ret = in.toLowerCase(Locale.ROOT);
        return ret;
    }

    private static String stg2(String in) {
        String ret = "";
        ret = in.replaceAll("[^-_.a-z0-9]", "");

        //2단계
        //
        // 알파벳 소문자, 숫자, 빼기(-), 밑줄(_), 마침표(.)를 제외한 모든 문자를 제거합니다.

        return ret;
    }

    private static String stg3(String in) {
        String ret = "";

        return ret;
    }

    private static String stg4(String in) {
        //4단계 new_id에서 마침표(.)가 처음이나 끝에 위치한다면 제거합니다.
        if(in.isEmpty()) {
            return in;
        }


        if(in.charAt(0) == '.') {
            in = in.substring(1,in.length());
        }

        if(in.charAt(in.length()) == '.') {
            in = in.substring(0,in.length()-1);
        }

        return in;
    }

    private static String stg5(String in) {
        //5단계 new_id가 빈 문자열이라면, new_id에 "a"를 대입합니다.
        if(in.equals("")) {
            return "a";
        }else  {
            return in;
        }
    }

    private static String stg6(String in) {
        //6단계 new_id의 길이가 16자 이상이면,
           // new_id의 첫 15개의 문자를 제외한 나머지 문자들을 모두 제거합니다.
        if(in.length() >=16) {
            in = in.substring(0,15);
        }



        //만약 제거 후 마침표(.)가 new_id의 끝에 위치한다면
          // 끝에 위치한 마침표(.) 문자를 제거합니다.
        if(in.charAt(in.length()) == '.') {
            //어디까지 ..인지 알아내야됨 수정필요
             // 반례 asdasd..... 요지랄

            in = in.substring(0,in.length()-1);

        }

        return in;
    }

    private static String stg7(String in) {
        // 7단계 new_id의 길이가 2자 이하라면,
        // new_id의 마지막 문자를 new_id의 길이가 3이 될 때까지 반복해서 끝에 붙입니다.
        if(in.length() <= 2) {
            while (in.length() >=3) {
                in = in + in.substring(in.length());
            }
        }
        return in;
    }

}
profile
Sorbet is good...!

0개의 댓글