推薦新身分(2021 KAKAO BLIND RECRUITMENT)
🔗 質問リンク
https://programmers.co.kr/learn/courses/30/lessons/72410
問題の説明
KACAに加入した新規開発者NEOは「KACAアカウント開発グループ」に割り当てられ、KACAサービスに加入したユーザのID生成を担当する.「ニオ」の最初のタスクは,新たに加入したユーザがKakao IDルールに合わないIDを入力する際に,入力したIDのようにルールに合ったIDを推薦できるようにするプログラムを開発することである.
次はKakao IDのルール
IDの長さは3文字または15文字を超えてはいけません.
IDは小文字、数字、マイナス(-)、アンダースコア()、ピリオド(.)文字のみ使用できます.
しかし、句号(.)先頭と末尾では使用できませんし、連続して使用することもできません.
新しいプレイヤーが入力したIDがnew idであれば、
手順1:new idのすべての大文字を対応する小文字に変換します.
手順2:newidの小文字、数字、マイナス記号(-)、下線()および句点(.)以外のすべての文字を削除します.
手順3:new idのピリオド(.)1つのポイント(.)に置き換えます.
ステップ4:new idのピリオド(.)先頭または末尾にある場合は削除します.
手順5:new idが空の文字列の場合、「a」をnew idに置き換えます.
ステップ6:new idの長さが16文字より大きい場合、new idの最初の15文字以外のすべての他の文字を削除します.削除後のピリオド(.)new idの末尾にある場合、終了記号(.)テキストを削除します.
ステップ7:new idの長さが2文字未満の場合、new idの長さが3になるまで、new idの最後の文字を最後に繰り返し貼り付けます.
⚠▼制限
new idは、長さが1または1000未満の文字列です.
新idは、アルファベットの大文字、アルファベットの小文字、数字、特殊な文字から構成されています.
newidに現れる可能性のある特殊文字は-.~!@#$%^&*()=+[{]}:?,<>/のみ.
💡 プール(言語:JavaとPython)
Java
私が本当に熟練していない部分は正規式です.今回やった時は何かを学んだようです.これからもっと練習すれば慣れるはずです.
class Solution {
public String solution(String new_id) {
// step 1
new_id = new_id.toLowerCase();
// step 2
new_id = new_id.replaceAll("[^a-z0-9._-]", "");
// step 3
new_id = new_id.replaceAll("[.]{2,}", ".");
// step 4
new_id = new_id.replaceAll("^[.]|[.]$", "");
// step 5
if (new_id.length() == 0)
new_id = "a";
// step 6
if (new_id.length() >= 16)
new_id = new_id.substring(0, 15).replaceAll("[.]$", "");
// step 7
if (new_id.length() <= 2) {
while (new_id.length() < 3)
new_id += new_id.charAt(new_id.length()-1);
}
return new_id;
}
}
Pythonこれは、複数の文字列を1つの問題に処理できる少し簡単ですが、良い問題です.
joinを使用して文字列に特定の文字のみが含まれている文字列を抽出し、replaceを使用して特定の文字を置き換えます.
また、文字列は文字を変更することはできません.斜線などに変更し、新しい変数に割り当てる必要があります.
それを学んだ.
import string
def solution(new_id):
characters = string.ascii_lowercase + string.digits + "-" + "_" + "."
# 1단계
new_id = new_id.lower()
# 2단계
new_id = ''.join(x for x in new_id if x in characters)
# 3단계
while new_id.count("..") != 0:
new_id = new_id.replace("..", ".")
# 4단계
if new_id[0] == "." and new_id[-1] == ".":
new_id = new_id[1:len(new_id)-1]
elif new_id[0] == ".":
new_id = new_id[1:]
elif new_id[-1] == ".":
new_id = new_id[:len(new_id)-1]
# 5단계
if len(new_id) == 0:
new_id = "a"
# 6단계
if len(new_id) >= 16:
new_id = new_id[:15]
if new_id[-1] == ".":
new_id = new_id[:len(new_id)-1]
# 7단계
elif len(new_id) <= 2:
while len(new_id) != 3:
new_id += new_id[-1]
return new_id
Reference
この問題について(推薦新身分(2021 KAKAO BLIND RECRUITMENT)), 我々は、より多くの情報をここで見つけました https://velog.io/@shiningcastle/신규-아이디-추천-2021-KAKAO-BLIND-RECRUITMENTテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol