スキルツリー
1779 ワード
def solution(skill, skill_trees):
answer = 0
d = [False] * 26
for sk in skill_trees:
for i in range(1, len(skill)):
index = ord(skill[i]) - ord('A')
d[index] = True
skill_index = 0
flag = False
for i in range(len(sk)):
if d[ord(sk[i]) - ord('A')]:
flag = True
break
if skill[skill_index] == sk[i]:
skill_index+=1
if skill_index >= len(skill):
skill_index-=1
continue
d[ord(skill[skill_index]) - ord('A')] = False
if not flag:
answer+=1
return answer
問題の説明
1)巡回スキル配列のforゲートを作る.
2)dという名前の配列を作成し,先行スキルを持つスキルのみをTrueに設定する.
3)スキルインデックス変数を作成し、先行スキルの順序を格納します.
4)変数flagを作成し、最終的に1回違反したかどうかを確認します.
5)スキル配列中のスキルを1つずつ取り出してドアを回す.
6)現在使用している(学習する)スキルがTrueのままの場合、flagをTrueに変換して重複文を終了します.
7)現在使用されているスキルが先行スキルの1つ目であれば
8)ロースキルインデックスを増やし,増加したインデックス値に対応するd配列の値をFalseに変換する.
9)最終的な先行スキルを突破すれば,インデックスは追加されない.
10)最後にfor文を離れるとき,flagの値で答えを増やすか否かを決定する.
他人の解答
def solution(skill, skill_trees):
answer = 0
for skills in skill_trees:
skill_list = list(skill)
for s in skills:
if s in skill:
if s != skill_list.pop(0):
break
else:
answer += 1
return answer
に感銘を与える
スキルの前置きリストをlistに入れ、最初と同じ場合はリリースし、次のリリース項目は自動的に次のスキルになります.
きれいに
どうせ初期化の時間は長くないので、この方法でいいです.
とても良いハーモニーです
Reference
この問題について(スキルツリー), 我々は、より多くの情報をここで見つけました https://velog.io/@16616516/스킬-트리テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol