開発プログラム機能(Lv 2)
2641 ワード
質問する
https://programmers.co.kr/learn/courses/30/lessons/42586
イニシャルコード
def solution(progresses, speeds):
answer = []
arr = []
for i in range(len(progresses)):
arr.append((100 - progresses[i]) // speeds[i])
for i in range(len(arr)-1):
if arr[i] > arr[i+1]:
arr[i+1] = arr[i]
d = {}
for i in arr:
if i in d:
d[i] += 1
else:
d[i] = 1
answer = list(d.values())
return answer
初期結果
私はdictのvalue値だけをテストしてリストに変えて、すぐにsushヒューと書きました.
一つは何だったっけ?
一般的にこの場合、極端な例は不可能なので、問題を読んで、最も極端な状況を頭に戻すように努力します!
ずれ
すぐに見つかると思ったけど、思ったより間違った場所を探すのが長かった
残りの作業量を作業速度で割った値は常に分離されていると考えられるため,コードを記述した.
for i in range(len(progresses)):
if (100-progresses[i]) % speeds[i] == 0 :
arr.append((100 - progresses[i]) // speeds[i])
else :
arr.append((100 - progresses[i]) // speeds[i] + 1)
だからこの部分を修正しました.分けない時は分+1
実際、これは特定のケースを漏らすのではなく、完全に間違った論理で書かれたコードです.
幸いなことに、1つを除いて、残りのテストケースに合格したようです.
だから逆に間違ったものを見つけるのに長い時間がかかったような気がします...
テスト用例は1~2個入っていますが、残りは間違っていても何も言えません!
正解
def solution(progresses, speeds):
answer = []
arr = []
for i in range(len(progresses)):
if (100-progresses[i]) % speeds[i] == 0 :
arr.append((100 - progresses[i]) // speeds[i])
else :
arr.append((100 - progresses[i]) // speeds[i] + 1)
for i in range(len(arr)-1):
if arr[i] > arr[i+1]:
arr[i+1] = arr[i]
d = {}
for i in arr:
if i in d:
d[i] += 1
else:
d[i] = 1
answer = list(d.values())
return answer
新学の部分
d = {} 혹은 d = dict()
こんなdという辞書があったときanswer = list(d.values())
values()メソッドを使用してdictionaryのvalues値のみを読み込むことができます.リストにしたいならリスト()でもう一回縛ります!
keys()メソッドも似たようなものです.
value値ではなくキー値からなるリストを作成する場合は、
list(d.keys())
こうすれば踊れる!!終わりだ!
Reference
この問題について(開発プログラム機能(Lv 2)), 我々は、より多くの情報をここで見つけました https://velog.io/@kjo1130/프로그래머스-기능개발Lv2テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol