[SWEA] 5208. [Python S/Wトラブルシューティング実施]5日間-電動バス2[D 3]
4964 ワード
📚 質問する
https://swexpertacademy.com/main/learn/course/subjectDetail.do?courseId=AVuPDYSqAAbw5UW6&subjectId=AWUYGf7K180DFAVT#
📖 に答える
最初に思ったのは、充電池で充電すれば、あとどのくらい行けるか知っていたことです.しかし、電池を交換したようで、以前の電気量は初期化してから新しい電池を持って出発した.
そのため、現在の位置から行ける位置から、コールが戻ってきて、それぞれ位置から充電して出発します.
枝を切ることで繰り返し回数を減らす.最後まで継続すると交換回数が初期化され、現在求めている交換回数がこれまで求めた最小交換回数以上であれば終了し、次の再帰関数を探索する.
📒 コード#コード#
def recur(cur, change):
global min_change
if min_change <= change: # 가지치기, 교환 횟수가 더 많아지면 X
return
if cur >= n:
min_change = min(min_change, change)
return
for i in range(1, arr[cur] + 1): # 움직일 수 있는 정류장
recur(cur + i, change + 1)
t = int(input())
for tc in range(1, t + 1):
arr = list(map(int, input().split()))
n = arr.pop(0) - 1
min_change = n
recur(0, -1) # 첫 정류장에서 연료를 넣고 출발하는 경우를 빼준다.
print(f'#{tc} {min_change}')
🔍 結果
Reference
この問題について([SWEA] 5208. [Python S/Wトラブルシューティング実施]5日間-電動バス2[D 3]), 我々は、より多くの情報をここで見つけました https://velog.io/@yunhlim/SWEA-5208.-파이썬-SW-문제해결-구현-5일차-전기버스2-D3テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol