[プログラマー]不良ユーザー(Pythonプール)
5643 ワード
これはプログラマーがアップロードしたKACA 2019実習生の3つの問題です.
https://programmers.co.kr/learn/courses/30/lessons/64064
質問は上記のサイトを参考にしていますが、質問を読む上で重要だと思う部分は以下の通りです.
Problem Point不良ユーザIDには、1つ以上の"*"文字が含まれています. トピックのIDリストを取得した場合、これらのIDの順序にかかわらず、IDリストの内容が同じであれば、それを同一と見なし、一括して計算することができる. 不良ユーザーのアイデンティティ値がすべて「*」で構成されている場合、文字数が同じであれば、場合によっては数字に含まれることがあり、順序にかかわらず、アイデンティティリストの内容が同じであれば、同じように処理されるので、set値を比較し、同じ値が含まれていれば追加しません.
に答える
最初のアクセスでは、無効id値に一致するuser id値を見つけようとし、各数に乗じた値や無効id値のうち最大値が結果値となるルールを見つけようとしたが、無効idでは重複するuser idを処理するのが難しいため断念した.
最初は2つ目の条件が見えて順番がなかったので、どちらかのプレイヤーを取ったときに
また,無効化されたid表現の形状はPythonを学習する際に一時的に学んだ正規表現と似ているため,
記入した正規表が少し不足しているので、前の点が正しいし、後に付けた字もチェックされるので、文字数制限も与えられています.
正規表現が分からないと言ったら、user idの文字数に基づいてインデックスにアクセスして同じかどうかを判断することができます.
最終回答
https://programmers.co.kr/learn/courses/30/lessons/64064
質問は上記のサイトを参考にしていますが、質問を読む上で重要だと思う部分は以下の通りです.
Problem Point
に答える
最初のアクセスでは、無効id値に一致するuser id値を見つけようとし、各数に乗じた値や無効id値のうち最大値が結果値となるルールを見つけようとしたが、無効idでは重複するuser idを処理するのが難しいため断念した.
最初は2つ目の条件が見えて順番がなかったので、どちらかのプレイヤーを取ったときに
combination
を使いたかったのですが、プレイヤーの順番によって、含まれる結果値が順番だけでなく中身も違うことが分かったので、順番を含むpermutation
を使うことにしました.また,無効化されたid表現の形状はPythonを学習する際に一時的に学んだ正規表現と似ているため,
정규식
を用いてuser id値と無効化されたid値をマッチングした.正規表現を使用する前に、「*」文字を使用します.文字に変えて、正規の儀式に直接使うことができます.記入した正規表が少し不足しているので、前の点が正しいし、後に付けた字もチェックされるので、文字数制限も与えられています.
正規表現が分からないと言ったら、user idの文字数に基づいてインデックスにアクセスして同じかどうかを判断することができます.
最終回答
from itertools import permutations
import re
def isMatch(user_id, ban_id):
for i in range(len(ban_id)):
p = re.compile(ban_id[i])
if not p.match(user_id[i]) or len(user_id[i]) != len(ban_id[i]):
return False
return True
def solution(user_id, banned_id):
ban_id = []
answer = []
for i in banned_id:
b = i.replace('*', '.')
ban_id.append(b)
for i in permutations(user_id, len(ban_id)):
if isMatch(i, ban_id):
i = set(i)
if i not in answer:
answer.append(i)
return len(answer)
Reference
この問題について([プログラマー]不良ユーザー(Pythonプール)), 我々は、より多くの情報をここで見つけました https://velog.io/@denhur62/Python-solvingテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol