[プログラマー]おすすめ新ID Python
15906 ワード
質問する
https://programmers.co.kr/learn/courses/30/lessons/72410
KACAに加入した新規開発者NEOは「KACAアカウント開発グループ」に割り当てられ、KACAサービスに加入したユーザのID生成を担当する.「ニオ」の最初のタスクは,新たに加入したユーザがKakao IDルールに合わないIDを入力する際に,入力したIDのようにルールに合ったIDを推薦できるようにするプログラムを開発することである.
次はKakao IDのルール
新しいプレイヤーが入力したIDがnew idであれば、
たとえば、new idの値が「...!@Bat#*.y.abcdefghijklm」の場合、上記の手順7を実行すると、new idは次のように変更されます.
第1段階の大文字「B」および「T」は、小文字「b」および「t」に変更された.
"...!@BaT#..y.abcdefghijklm"→ "...!@bat#..y.abcdefghijklm"
第2段階「!」、「@」、「#」、「」文字が削除されました.
"...!@bat#..y.abcdefghijklm"→ "...bat..y.abcdefghijklm"
第3段階「…」わあ「…」“.”に変更されました.
"...bat..y.abcdefghijklm"→ ".bat.y.abcdefghijklm"
第4段階IDの先頭の‘削除に成功しました.
".bat.y.abcdefghijklm"→ "bat.y.abcdefghijklm"
ステップ5のアイデンティティは空の文字列ではないので、変更はありません.
"bat.y.abcdefghijklm"→ "bat.y.abcdefghijklm"
ステップ6のアイデンティティ長が16文字を超えるため、上位15文字以外の文字は削除された.
"bat.y.abcdefghijklm"→ "bat.y.abcdefghi"
ステップ7のアイデンティティの長さは2文字を超えないため、変更はありません.
"bat.y.abcdefghi"→ "bat.y.abcdefghi"
したがって、新ユーザが入力したnew idが「...!@Bat#*.y.abcdefghijklm」である場合、neoのプログラムが推奨する新IDは「bat.y.abcdefghi」である.
新規プレイヤーが入力したnew idにパラメータが付与された場合、solution関数を完了し、「ニオ」が設計した7段階の処理手順後の推奨IDを返してください.
せいげんじょうけん
I/O例
アイデア
ソリューション関数python def solution(new_id):
id = list(new_id.lower())
new_list = []
for i in range(len(id)):
if id[i] not in ['~', '@', '#', '&', '!', '$', '%', '^', '*', '(', ')', '=', '+', '[', ']', '{', '}', ':', '?',
',', '<', '>', '/']:
new_list.append(id[i])
print(new_list)
# new_list = re.sub('[^a-z\d\-\_\.]', '', new_id.lower())
list4 = [0]
for i in range(len(new_list)):
if list4[-1] == new_list[i] == '.':
continue
else:
list4.append(new_list[i])
del list4[0]
if len(list4) > 0 and list4[0] == '.':
del list4[0]
if len(list4) > 0 and list4[-1] == '.':
del list4[-1]
if len(list4) == 0:
list4.append('a')
if len(list4) >= 16:
list4 = list4[:15]
if list4[-1] == '.':
del list4[-1]
if len(list4) <= 2:
for i in range(2):
if len(list4) == 3:
break
list4.append(list4[-1])
return ''.join(list4)
他者コード
::pythonのreを使用して簡単な解を求めました。
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
この問題について([プログラマー]おすすめ新ID Python), 我々は、より多くの情報をここで見つけました
https://velog.io/@guswl8280/프로그래머스-신규-아이디-추천-Python
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
def solution(new_id):
id = list(new_id.lower())
new_list = []
for i in range(len(id)):
if id[i] not in ['~', '@', '#', '&', '!', '$', '%', '^', '*', '(', ')', '=', '+', '[', ']', '{', '}', ':', '?',
',', '<', '>', '/']:
new_list.append(id[i])
print(new_list)
# new_list = re.sub('[^a-z\d\-\_\.]', '', new_id.lower())
list4 = [0]
for i in range(len(new_list)):
if list4[-1] == new_list[i] == '.':
continue
else:
list4.append(new_list[i])
del list4[0]
if len(list4) > 0 and list4[0] == '.':
del list4[0]
if len(list4) > 0 and list4[-1] == '.':
del list4[-1]
if len(list4) == 0:
list4.append('a')
if len(list4) >= 16:
list4 = list4[:15]
if list4[-1] == '.':
del list4[-1]
if len(list4) <= 2:
for i in range(2):
if len(list4) == 3:
break
list4.append(list4[-1])
return ''.join(list4)
::pythonのreを使用して簡単な解を求めました。
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
この問題について([プログラマー]おすすめ新ID Python), 我々は、より多くの情報をここで見つけました https://velog.io/@guswl8280/프로그래머스-신규-아이디-추천-Pythonテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol