プログラマスキルツリー(Lv 2)
2553 ワード
質問する
https://programmers.co.kr/learn/courses/30/lessons/49993
説明する
def solution(skill, skill_trees):
answer = 0
d = {"A":99,"B":99,"C":99,"D":99,"E":99,"F":99,"G":99,"H":99,"I":99,"J":99,"K":99,"L":99,"M":99,"N":99,"O":99,"P":99,"Q":99, "R":99, "S":99, "T":99,"U":99,"V":99,"W":99,"X":99,"Y":99,"Z":99}
order = 1
for i in skill:
d[i] = order
order += 1
for i in skill_trees:
arr = list(i)
check = True
current = 1
for j in range(len(arr)):
if d[arr[j]] == current:
current += 1
else:
if d[arr[j]] != 99:
check = False
break
if check == True:
answer += 1
return answer
結果
別の解釈
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
整理する
skill回転skill treesで比較してみました
もう一人はskill trees変換skillで比較します
長さが20以下の配列なので、時間の複雑さは十分に高いので、質問で与えられたように非常に正直に表現できましたが、他の解答のように、skill treesを前面から見ると、skillの最初の値に比べて、スキルシーケンスdictを別途作る必要はありません!
他の人のコードはもっと短いですが、dictも時間の複雑さもO(1)なので、私のコードも速いと思いますので、両方回って時間を比較しましょう!
ソースは縮小されましたが、ソリューション1は私のソリューションであり、ソリューション2は異なるソリューションです.
もうすぐ終わる仕事なので10万回回りました.
時間差は平均の2~3倍くらい!
私はずっと時間差が一番小さいものをネットにアップロードしたいと思っていましたが、役に立たなかったです.メフサイコロ44感性
ああ...さっき2倍の差があった時に直接カットすればよかったのに
新学
変換文字列-->配列
a = "hello"
list_a = list(a)
list_a // ['h','e','l','l','o']
セパレータまたは特定のセパレータを>a.split()に何度も変換してみました.バケツに変換したことがないので探しました.
直接リストで髪を結べばいい!
勉強終わり!
Reference
この問題について(プログラマスキルツリー(Lv 2)), 我々は、より多くの情報をここで見つけました https://velog.io/@kjo1130/프로그래머스-스킬트리テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol