解答)白準-13305/ガソリンスタンド


質問リンク

問題の概要

1. 제일 왼쪽 도시에서 제일 오른쪽 도시로 이동 할 때 드는 최소 비용을 구하라
2. 각 도시엔 1개의 주유소가 있고 각 도시 사이엔 도로가 있다.
3. 첫 도시에서는 항상 주유를 하고 이동해야한다.

どうやって解くの?

1. 가장 기름값이 저렴한 도시에서 최대한 많은 기름을 주유해야 한다.
2. 현재 도시의 기름값 보다 저렴한 도시를 순서대로 체크하고 이동거리만큼 주유해야 한다.

コード#コード#

n = int(input())
road = list(map(int, input().split(' ')))
price = list(map(int, input().split(' ')))
result = 0
cur_pos = 0 # 현재 위치
cur_price = price[0] # 현재 기름값

for i in range(len(road)):
  result += cur_price * road[cur_pos]
  cur_pos +=1
  if cur_price > price[i+1]:
    cur_price = price[i+1]
    
print(result)

コード解析

line 8. 비용합산 -> 위치 이동(다음 도시로) -> 현재가격이 더 높은 경우만 다음 도시의 가격으로 변환

フィードバック

가격 따로, 위치 따로 변수를 설정해서 해결하니 쉬웠다.
-> 묶어서 처리하기 복잡한 문제는 나누어서 하는게 더 효율적이다.