プログラマー-2012 KAKAO BLIND RECRUITMENT(Javaが推奨する新しいアイデア)
正規表現
Javaを使用して、プログラマー2021 KAO BLIND RECRUITMENT Level 1の質問に答えた新しいID推奨.
正規表現で簡単に解くことができます.この機会に正規表現の基本的な使い方を学びました.
質問リンクを添付します.
https://programmers.co.kr/learn/courses/30/lessons/72410
移行フェーズによる処理
手順1(大文字->小文字)
ステップ3(連続"."を単一"."に置き換える)
手順4(「.」を先頭または末尾に削除)
ステップ5(空の文字列の場合は「a」を挿入)
ステップ7(2文字未満の場合は最後の文字を3文字にペースト)
次は私が提出したすべてのコードです.
Regexの使い方をいくつか覚えました.しっかり覚えて、適切に使え!!
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の使い方をいくつか覚えました.しっかり覚えて、適切に使え!!
Reference
この問題について(プログラマー-2012 KAKAO BLIND RECRUITMENT(Javaが推奨する新しいアイデア)), 我々は、より多くの情報をここで見つけました https://velog.io/@topqr123q/프로그래머스-2021-KAKAO-BLIND-RECRUITMENT-신규-아이디-추천-by-Javaテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol