プログラマー-2012 KAKAO BLIND RECRUITMENT(Javaが推奨する新しいアイデア)


正規表現
Javaを使用して、プログラマー2021 KAO BLIND RECRUITMENT Level 1の質問に答えた新しいID推奨.
正規表現で簡単に解くことができます.この機会に正規表現の基本的な使い方を学びました.
質問リンクを添付します.
https://programmers.co.kr/learn/courses/30/lessons/72410
移行フェーズによる処理
手順1(大文字->小文字)
/** 1번 작업 */
answer = new_id.toLowerCase();
ステップ2(条件を満たしていない文字を削除)
/** 2번 작업 */
String match = "[^a-z\\d\\-_.]*";
answer = answer.replaceAll(match, "");
小文字、数字、「-」、「」、「.」それ以外にも全て除去しなければならないので、matchを宣言することによってreplaceAll()の方法を使用することができる.^[]内に配置される場合、notを意味する.つまり、[]の中のやつ以外は、弁別しなければならない.
ステップ3(連続"."を単一"."に置き換える)
/** 3번 작업 */
match = "\\.{2,}";
answer = answer.replaceAll(match, ".");
特殊文字を表す場合は、\\.のように\を連続して書き、複数回以上繰り返した場合は{n,}のようにn回以上を表す.
手順4(「.」を先頭または末尾に削除)
/** 4번 작업 */
match = "^[.]|[.]$";
answer = answer.replaceAll(match, "");
^および$は、それぞれ文字列の始点および終点を表す.そこで、始点の.と終点の.とを判別する.
ステップ5(空の文字列の場合は「a」を挿入)
/** 5번 작업 */
if(answer.isEmpty())    answer += "a";
ステップ6(16文字以上の場合は15文字まで)
/** 6번 작업 */
if(answer.length()>15)  answer = answer.substring(0, 15);
answer = answer.replaceAll("[.]$", "");
最終的にsubString()が残らないように、.を用いて切除した.
ステップ7(2文字未満の場合は最後の文字を3文字にペースト)
/** 7번 작업 */
if(answer.length()<=2){
    char last = answer.charAt(answer.length()-1);
    while(answer.length()!=3)   answer += last;
}
以上の7段階を経て、answerは問題条件に合致するやつになる.
次は私が提出したすべてのコードです.
public class NewIDRecommend {
    static String solution(String new_id) {
        String answer = "";
        /** 1번 작업 */
        answer = new_id.toLowerCase();

        /** 2번 작업 */
        String match = "[^a-z\\d\\-_.]*";
        answer = answer.replaceAll(match, "");

        /** 3번 작업 */
        match = "\\.{2,}";
        answer = answer.replaceAll(match, ".");

        /** 4번 작업 */
        match = "^[.]|[.]$";
        answer = answer.replaceAll(match, "");

        /** 5번 작업 */
        if(answer.isEmpty())    answer += "a";

        /** 6번 작업 */
        if(answer.length()>15)  answer = answer.substring(0, 15);
        answer = answer.replaceAll("[.]$", "");

        /** 7번 작업 */
        if(answer.length()<=2){
            char last = answer.charAt(answer.length()-1);
            while(answer.length()!=3)   answer += last;
        }

        return answer;
    }

    public static void main(String[] args) {
        String new_id = "abcdefghijklmn.p";
        System.out.println(solution(new_id));
    }
}
きょう習った
Regexの使い方をいくつか覚えました.しっかり覚えて、適切に使え!!