[プログラマー]新しいアイデンティティを推奨
📩 -->問題の説明
KACAに加入した新規開発者NEOは「KACAアカウント開発グループ」に割り当てられ、KACAサービスに加入したユーザのID生成を担当する.「ニオ」の最初のタスクは,新たに加入したユーザがKakao IDルールに合わないIDを入力する際に,入力したIDのようにルールに合ったIDを推薦できるようにするプログラムを開発することである.
次はKakao IDのルール
アイデンティティー・ルール
きじゅん
手順1 new idのすべての大文字を対応する小文字に置き換えます.
ステップ2 newidの小文字、数字、マイナス記号(-)、下線()および句点(.)以外のすべての文字を削除します.
ステップ3 new idのピリオド(.)1つのポイント(.)に置き換えます.
ステップ4 new idのピリオド(.)先頭または末尾にある場合は削除します.
ステップ5 new idが空の文字列の場合、new idに「a」を挿入します.
ステップ6 new idの長さが16文字を超える場合、new idの最初の15文字以外のすべての他の文字を削除します.
削除後のピリオド(.)new idの末尾にある場合、終了記号(.)テキストを削除します.
ステップ7のnew idの長さが2文字未満の場合、new idの長さが3になるまで、new idの最後の文字を最後に繰り返し貼り付けます.
I/O例
nonew idresult例1「...!@Bat#*.y.abcdefghijklm」「bat.y.abcdefghi」「例2」z-+.^.」z--「Yes 3」=.=「aaa」例4「123.def」「123.def」「Yes 5」abcdefghijklmn.p「abcdefghijklmn」
💡 ソリューション(使用言語:python)
import re
def solution(new_id):
# 1단계
new_id = new_id.lower()
# 2단계
new_id = re.sub(r"[^a-z0-9_.-]","",new_id)
# 3단계
while '..' in new_id:
new_id = new_id.replace('..', '.')
# 4단계
new_id = new_id.strip('.')
# 5단계
if new_id == '':
new_id += 'a'
# 6단계
if len(new_id) >= 16:
new_id = new_id[:15]
if new_id[-1] =='.':
new_id = new_id.rstrip('.')
# 7단계
if len(new_id) == 1:
new_id+=new_id
if len(new_id) == 2:
new_id+=new_id[-1]
return new_id
👉 説明:
手順1:lower()を小文字で置き換える
new_id = new_id.lower()
手順2:正規表現or for文の使い方 new_id = re.sub(r"[^a-z0-9_.-]","",new_id)
または for id in new_id:
if id.isalpha() or id.isdigit() or id in ['-', '_', '.']:
answer += id
手順3:繰り返し文「...」を使用「ないまで」.置換 while '..' in new_id:
new_id = new_id.replace('..', '.')
ステップ4:strip()は、スペースを削除するときに多く使われ、特定の文字を削除したいときに使えます.rstrip()を行うと右側を削除でき、lstrip()を行うと文字の左側を削除できます.new_id = new_id.strip('.')
手順5:空の文字列「a」を入力 if new_id == '':
new_id += 'a'
手順6:文字数に応じたアイデンティティの調整 if len(new_id) >= 16:
new_id = new_id[:15]
if new_id[-1] =='.':
new_id = new_id.rstrip('.')
ステップ7:文字列長が3未満の場合 if len(new_id) == 1:
new_id+=new_id
if len(new_id) == 2:
new_id+=new_id[-1]
結果
別の解釈
import re
def solution(new_id):
st = new_id
st = st.lower()
st = re.sub('[^a-z0-9\-_.]', '', st)
st = re.sub('\.+', '.', st)
st = re.sub('^[.]|[.]$', '', st)
st = 'a' if len(st) == 0 else st[:15]
st = re.sub('^[.]|[.]$', '', st)
st = st if len(st) > 2 else st + "".join([st[-1] for i in range(3-len(st))])
return st
これで正規表現も解決できます!🌈 に感銘を与える
以前は教育を受けていたとき、解くときに目立っていたので、再解く問題、基本的な文字列の性質を考えることができます.
間違いがあれば、伝言を残してください.🙂
ソース:プログラマ
Reference
この問題について([プログラマー]新しいアイデンティティを推奨), 我々は、より多くの情報をここで見つけました https://velog.io/@letgodchan0/프로그래머스-신규-아이디-추천テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol