[Programmer-021 KAKAO BLIND RECRUITMENT#1]新しいアイデアをお勧め
2021年から雄大なVELOG-、!
下半期から始めることにしました!ふふ(とにかく)
私はドキュメント化が好きで、主に私が閲覧しやすい形式でwordで書かれています.
再度VELOGにアクセスした理由は、後で公開された場所で知識を共有するため、それを記録することにしたからです!
第1篇文章は2021 KACA新入国債第1回オンラインコードテスト問題です!
これらの問題はKaKao Techのブログとプログラマーに現れた.
リンク👉 2021ココア新公債第1回オンラインコードテスト技術開発者問題解説
1つ目の質問新しいIDは一見「正規式」で解決すべきだと思います.特に2-3ステップを解く過程で.
パイソンの正規式関連書類はジャンプ開始ダブルPython 07-2正規表現を見て、よく整理されています.
これらの問題では
new idに現れる可能性のある特殊文字は-.~!@#$%^&*()=+[{]}:?,<>/のみ.
宣言したが、ステップ2で説明した小文字、数字、マイナス記号(-)、下線()、句点(.)除外したい.
正規表現から除外するには、文字クラスで^を使用する必要がありますが、問題はorがあり、ありません.
.使用するには[.]書くべきだと思うので、文字クラスでも[.]書こうと思ったんだけどね(^.)こうして(^.)はい. ハイフンは文字クラスにも~の概念(from-to)があるので、ハイフン以外は難しいですがescapeシーケンスも使えます. 結局一つずつ取り除くことにしましたが、ははは…!与えられた特殊文字のうち、escapeシーケンスを必要とする文字は、意外にも^と]のみである.
p=~とp.subで、reではありません.sub(pattern,repl,string,count=0,flags=0)もこのように書くことができます.
もし私が本当にコードテストに参加していたら、どうせ正確なウォーミングアップの第1題だけを考えて早く終わったほうがいいです. 題を終えて、他の人の解答を見ました.
うろうろして、、、2階の正規式の部分はこのように書けばいいです、
下半期から始めることにしました!ふふ(とにかく)
私はドキュメント化が好きで、主に私が閲覧しやすい形式でwordで書かれています.
再度VELOGにアクセスした理由は、後で公開された場所で知識を共有するため、それを記録することにしたからです!
第1篇文章は2021 KACA新入国債第1回オンラインコードテスト問題です!
これらの問題はKaKao Techのブログとプログラマーに現れた.
リンク👉 2021ココア新公債第1回オンラインコードテスト技術開発者問題解説
問題を解く構想.
1つ目の質問新しいIDは一見「正規式」で解決すべきだと思います.特に2-3ステップを解く過程で.
パイソンの正規式関連書類はジャンプ開始ダブルPython 07-2正規表現を見て、よく整理されています.
考えを具体化する
こう書いて、こう読む。
これらの問題では
new idに現れる可能性のある特殊文字は-.~!@#$%^&*()=+[{]}:?,<>/のみ.
宣言したが、ステップ2で説明した小文字、数字、マイナス記号(-)、下線()、句点(.)除外したい.
正規表現から除外するには、文字クラスで^を使用する必要がありますが、問題はorがあり、ありません.
p = re.compile('[\W|^\-|^\.]')
上記のように、小文字(含む)ではなく、マイナス記号ではなく、句点ではなく、正規の形式で表されます.>>> p.findall("...!@BaT#*..y.abcdefghijklm")
['.', '.', '.', '!', '@', '#', '*', '.', '.', '.']
あるいは...呜呜...以下にもコンパイルしました.p = re.compile('[^\w|^\-|^\.]')
>>> p.findall("...!@BaT#*..y.abcdefghijklm")
['!', '@', '#', '*']
前者は.フィルタできません、^フィルタできます...後者.フィルタリングあと正規式を使うときに少し迷う部分があると。
合成コード
import re
def solution(new_id):
#1단계
answer = new_id.lower()
#2단계
p = re.compile('[~|!|@|#|$|%|\^|&|*|(|)|=|+|[|{|\]|}|:|?|,|<|>|/]')
answer = p.sub('', answer)
#3단계
p = re.compile('[.]{2,}')
answer = p.sub('.', answer)
#4단계
p = re.compile('^[.]|[.]$')
answer = p.sub('', answer)
#5단계
if answer == '' : answer ="a"
#6단계
answer = answer[:15]
answer = p.sub('', answer)
#7단계
if len(answer) < 3:
while(len(answer)<3): answer+=answer[-1]
return answer
上記のコードを書きましたが、reのドキュメントについてを読みました.p=~とp.subで、reではありません.sub(pattern,repl,string,count=0,flags=0)もこのように書くことができます.
結論/感受
うろうろして、、、2階の正規式の部分はこのように書けばいいです、
re.sub('[^a-z0-9\-_.]', '', st)
あ、問題は最初findallではなくmatchで正規式を確認したことです.orどうしたの...どうしたんですか.私は.バカ…!Reference
この問題について([Programmer-021 KAKAO BLIND RECRUITMENT#1]新しいアイデアをお勧め), 我々は、より多くの情報をここで見つけました https://velog.io/@charming9871/Programmers-2021-KAKAO-BLIND-RECRUITMENT-1-신규-아이디-추천テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol