[プログラマー]機能の開発-python
2680 ワード
▼▼▼問題説明
プログラマチームは機能強化を実行しています.各機能は、進捗が100%の場合にサービスに反映されます.
また、各機能の開発速度が異なるため、後の機能は前の機能の開発より先に、後の機能は前の機能の導入時に一緒に導入される可能性があります.
まず、ソリューション関数を完了し、特定の整数配列の進捗状況(必要に応じて配置される順序)と整数配列速度(タスクごとの開発速度)のときに、各配置にどれだけの機能があるかを返します.
▼▼▼制限タスクの数(進捗、速度配列長)は100を超えません. 作業の進捗は100の自然数を下回っています. の動作速度は100以下の自然数である. 導入では、1日に1回しか導入できないと仮定し、1日の終了時に導入します.
たとえば、開発の進捗状況が95%のタスクの速度が1日4%の場合、導入は2日後に完了します. 🎈 I/O例
👩💻 マイコード各機能の完了時間 を取得する.(100進捗[i])%速度[i]=0の場合、
(100-progress[i])/速度[i]の値は稼働時間です. (100-progress[i])%速度[i]>0の場合、
(100-progress[i])/速度[i]+1の値は、動作時間です. リストの前後インデックスの値が自身より小さい場合count+=1;
自分より値が大きい場合は、結果に入れます. 結果が大きく出てきました.🥲
なぜかよく考えてみると、私は本当に愚かだと気づいた.
後ろのインデックスだけを比較してresultに置くとエラーが発生しました...ハハハ
修正後のコード
成功˙∇˙)ง(ว˙∇˙)ง(ว˙∇˙)ง(ว˙∇˙)ง(ว˙∇˙)ง(ว˙∇˙)ง(ว˙∇˙)ง
アルゴリズムが弱いせいか、これは易しい問題だと分かっていても、なかなか解けない.もっと勉强しなきゃ!
プログラマチームは機能強化を実行しています.各機能は、進捗が100%の場合にサービスに反映されます.
また、各機能の開発速度が異なるため、後の機能は前の機能の開発より先に、後の機能は前の機能の導入時に一緒に導入される可能性があります.
まず、ソリューション関数を完了し、特定の整数配列の進捗状況(必要に応じて配置される順序)と整数配列速度(タスクごとの開発速度)のときに、各配置にどれだけの機能があるかを返します.
▼▼▼制限
たとえば、開発の進捗状況が95%のタスクの速度が1日4%の場合、導入は2日後に完了します.
👩💻 マイコード
def solution(progresses, speeds):
days = [] # 작업 완료 기간을 담는 리스트
for i in range(len(progresses)):
if ((100-progresses[i]) % speeds[i]) == 0:
days.append(int((100-progresses[i]) / speeds[i]))
else:
days.append(int((100-progresses[i]) / speeds[i] + 1))
result = [] # 결과를 담는 리스트
count = 1 # 서비스에 반영할 수 있는 기능 갯수
for i in range(len(days)-1):
if days[i] < days[i+1]:
result.append(count)
count = 1
else:
count += 1
result.append(count)
return result
まず,コードの記述方法を考えた結果,以下のようになった.(100-progress[i])/速度[i]の値は稼働時間です.
(100-progress[i])/速度[i]+1の値は、動作時間です.
自分より値が大きい場合は、結果に入れます.
なぜかよく考えてみると、私は本当に愚かだと気づいた.
後ろのインデックスだけを比較してresultに置くとエラーが発生しました...ハハハ
修正後のコード
def solution(progresses, speeds):
days = []
for i in range(len(progresses)):
if ((100-progresses[i]) % speeds[i]) == 0:
days.append(int((100-progresses[i]) / speeds[i]))
else:
days.append(int((100-progresses[i]) / speeds[i] + 1))
result = []
count = 1
for i in range(len(days)-1):
if days[i] != -1:
for j in range(i+1, len(days)):
if days[i] < days[j]:
result.append(count)
count = 1
break
else:
count += 1
days[j] = -1
else:
continue
result.append(count)
print(days)
return result
1つのインデックスのみを比較するのではなく、後のすべてのインデックスを比較するために、2つのfor文が作成されました.次にcountの要素を-1に変更し、比較した場合は次のインデックスに移動するように記述します.成功˙∇˙)ง(ว˙∇˙)ง(ว˙∇˙)ง(ว˙∇˙)ง(ว˙∇˙)ง(ว˙∇˙)ง(ว˙∇˙)ง
アルゴリズムが弱いせいか、これは易しい問題だと分かっていても、なかなか解けない.もっと勉强しなきゃ!
Reference
この問題について([プログラマー]機能の開発-python), 我々は、より多くの情報をここで見つけました https://velog.io/@tanger2ne/프로그래머스-기능개발-pythonテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol