Algorithm/백준

[Python] 백준 11305번 '주유소'

코딩쪼앙 2023. 1. 18. 20:59

문제

 

13305번: 주유소

표준 입력으로 다음 정보가 주어진다. 첫 번째 줄에는 도시의 개수를 나타내는 정수 N(2 ≤ N ≤ 100,000)이 주어진다. 다음 줄에는 인접한 두 도시를 연결하는 도로의 길이가 제일 왼쪽 도로부터 N-1

www.acmicpc.net

입력

  • 표준 입력으로 다음 정보가 주어진다. 첫 번째 줄에는 도시의 개수를 나타내는 정수 N(2 ≤ N ≤ 100,000)이 주어진다. 다음 줄에는 인접한 두 도시를 연결하는 도로의 길이가 제일 왼쪽 도로부터 N-1개의 자연수로 주어진다. 다음 줄에는 주유소의 리터당 가격이 제일 왼쪽 도시부터 순서대로 N개의 자연수로 주어진다. 제일 왼쪽 도시부터 제일 오른쪽 도시까지의 거리는 1이상 1,000,000,000 이하의 자연수이다. 리터당 가격은 1 이상 1,000,000,000 이하의 자연수이다. 

출력

  • 표준 출력으로 제일 왼쪽 도시에서 제일 오른쪽 도시로 가는 최소 비용을 출력한다. 

문제 풀이

  • 첫 번째 기름은 무조건 충전해야 하므로 첫 번째 주유소의 기름값과 도로길이를 곱해서 결과 값 업데이트
  • 그 후, 기름 값이 낮은 곳에서 충전 해 나가면 되므로, 이전 최소 기름 값보다 현재의 기름 값이 더 싸다면, 최소 기름 값 업데이트
  • 최소 기름 값과 도로 길이를 곱해서 결과 값에 더해준다
  • 결과 값  출력

코드

n = int(input())
road = list(map(int,input().split()))
price = list(map(int,input().split()))
result = price[0] * road[0]
min_price = price[0]
for i in range(1, len(price) - 1):
    if min_price > price[i]:
        min_price = price[i]
    result += min_price * road[i]
print(result)