개발 연습장/백준 문제풀이

[파이썬, Python] 백준 13305: 주유소

LooanCheong 2023. 3. 2. 10:17
반응형

문제

https://www.acmicpc.net/problem/13305

 

13305번: 주유소

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

www.acmicpc.net

코드

n = int(input())
road = list(map(int, input().split()))
cost = list(map(int, input().split()))

min_cost = cost[0]
ans = 0

for i in range(n-1):
    if cost[i] < min_cost:
        min_cost = cost[i]
    ans += min_cost * road[i]
        
print(ans)

설명

우선 min_cost를 통해 최저가인 가격을 저장해 준다.

이후 주유소를 차례대로 지나게 되는데,
만약 지나가는 주유소의 가격이 이전 가격보다 낮다면 최저가를 갱신해 준다.

지나는 주유소의 가격이 현재 가격보다 낮다면 지금까지 온 비용을
'기존 최저가 * 지나온 길'의 계산식으로,

지나는 주유소의 가격이 현재 가격보다 높다면
'현재 최저가 * 지나온 길'의 계산식을 사용한다.

Ex) 지금까지 지나온 주유소의 최저가: 3, 현재 주유소의 가격: 2, 지나온 길의 길이: 3이라고 가정하면,
지금까지의 길은 3*3의 계산식으로 9원이 도출되고 앞으로는 2원보다 낮은 값이 나올 때까지 2원의 기름으로 가게 된다.

그렇지 않다면 기존의 주유소에서 넣어서 왔다고 가정하고 가격을 더해주는 방식이다.

이후 정답을 출력해 준다.

반응형