Algorithm/SW Expert Academy

[Python] 5208. 전기버스2

느낌표 공장장 2021. 10. 7. 23:30

코드 1

def recur(now, cnt, battery):
    global answer

    battery -= 1    # 배터리 감소

    if now == n-1:  # 마지막 정류장까지 온 경우
        answer = min(answer, cnt)   # 작은 횟수로 갱신
        return

    if answer <= cnt:   # 가지치기
        return

    recur(now+1, cnt+1, bus_stop[now])  # 배터리 교체하는 경우
    if battery: # 배터리가 있을 경우에만
        recur(now+1, cnt, battery)  # 배터리 교체하지 않는 경우


for idx in range(1, int(input())+1):
    temp = list(map(int, input().split()))
    n = temp[0]     # 정류장 수
    bus_stop = temp[1:]  # 정류장 별 배터리 용량

    answer = 999999999999
    recur(1, 0, bus_stop[0])

    print('#{} {}'.format(idx, answer))

 

코드 2 

다른 팀원의 코드

def recur(now, cnt):
    global answer

    if now == n-1:
        answer = min(answer, cnt)
        return

    if answer <= cnt:
        return

    for i in range(1, bus_stop[now] + 1):    # 현재위치의 배터리만큼 갈 수 있는 곳까지 가기
        recur(now+i, cnt+1)

for idx in range(1, int(input())+1):
    temp = list(map(int, input().split()))
    n = temp[0]     # 정류장 수
    bus_stop = temp[1:]  # 정류장 별 배터리 용량

    answer = 999999999999
    recur(0, 0)

    print('#{} {}'.format(idx, answer-1))

 

'Algorithm > SW Expert Academy' 카테고리의 다른 글

[Python] 1865. 동철이의 일분배  (0) 2021.10.07
[Python] 5209. 최소 생산 비용  (2) 2021.10.07
[Python] 5207. 이진탐색  (0) 2021.10.07
[Python] 5205. 퀵 정렬  (0) 2021.10.07
[Python] 5204. 병합 정렬  (0) 2021.10.07