スキルツリー
3279 ワード
プログラマ-スキルツリー
先行スキルとは、あるスキルを学ぶ前に学ばなければならないスキルです.
たとえば、現在のスキルの順序が
以上の手順にない他のスキル(癒しなど)は順番に学ぶことができます.このため、
前置スキル順序スキルとプレイヤーが作成したスキルツリーの配列スキルtreeをパラメータとして指定する場合は、できるだけスキルツリーの数を返すsolution関数を作成します.
スキルはアルファベット大文字でマークされ、すべての文字列はアルファベット大文字のみで構成されています. スキル順序とスキルツリーは文字列で表されます.
例えば、 、
前置技能順序技能の長さは1以上26以下であり、技能は繰り返してはならない. skill treesは、長さが1または20未満の配列である. skill treesの要素は、スキルを表す文字列です. skill treesの要素は、2または26より長い文字列であり、このスキルは繰り返しません.
skillskill_treesreturn
スキルツリーから文字を1つずつ取得します.
いずれにしてもskill文字列で先決スキル条件が守られているかを確認するためには,まず各スキルツリーから順次文字を導入して比較することが考えられる.
比較する文字はスキルに含める必要があります.
スキルツリーから見ると,前置スキルに関係のないスキルは随時学習できるので,文字を比較する際にはスキル中の文字認知検査を行い,比較を行う.
しかし、この問題を解決することができなかったので、他の人の解答で答えを確認しました.
問題の説明
先行スキルとは、あるスキルを学ぶ前に学ばなければならないスキルです.
たとえば、現在のスキルの順序が
스파크 → 라이트닝 볼트 → 썬더
の場合、ライターを学習する前にライターを学習する必要があります.以上の手順にない他のスキル(癒しなど)は順番に学ぶことができます.このため、
스파크 → 힐링 → 라이트닝 볼트 → 썬더
等の技能木を使用することができるが、썬더 → 스파크나 라이트닝 볼트 → 스파크 → 힐링 → 썬더
等の技能木を使用することはできない.前置スキル順序スキルとプレイヤーが作成したスキルツリーの配列スキルtreeをパラメータとして指定する場合は、できるだけスキルツリーの数を返すsolution関数を作成します.
せいげんじょうけん
例えば、
C → B → D
であれば「CBD」と表記される.I/O例
skillskill_treesreturn
"CBD"
["BACDE", "CBADF", "AECB", "BDA"]
2ソリューション
スキルツリーから文字を1つずつ取得します.
いずれにしてもskill文字列で先決スキル条件が守られているかを確認するためには,まず各スキルツリーから順次文字を導入して比較することが考えられる.
比較する文字はスキルに含める必要があります.
スキルツリーから見ると,前置スキルに関係のないスキルは随時学習できるので,文字を比較する際にはスキル中の文字認知検査を行い,比較を行う.
他人の解答
しかし、この問題を解決することができなかったので、他の人の解答で答えを確認しました.
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
リストメソッドの1つであるpopを使用するためにskillをリストに変換して使用します.skillで一度チェックしたスキルは、後で現れないと条件を満たすので、再チェックは必要ありません.だからpopで条件をチェックしながらリストから削除します.for ... else
ドアを使用して、より簡潔に表現されています.for ... else
繰り返し文がbreak
によって中断されない場合、else
文が実行される.上記のコードでは、重複文が中断されていないことは、このスキルツリーが前のスキル順序をよく満たしていることを意味し、1つの答え値が増加します.Reference
この問題について(スキルツリー), 我々は、より多くの情報をここで見つけました https://velog.io/@shin0805/스킬트리テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol