# Coding/# 백준

[백준 / 13305] 주유소 - Python

강현들 2021. 7. 23. 17:23
728x90
반응형

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

 

13305번: 주유소

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

www.acmicpc.net

<풀이>

1. 앞에 가격보다 뒤의 가격이 크면 앞의 가격으로 사는 것이 좋다.

따라서 뒤의 가격이 더 크면 앞의 값중 제일 작은 값으로 바꾼다.

2. 뒤에서부터 거꾸로 가면서 가격이 더 커지면 뒤에서 해당 도시까지 온 거리를 해당 기름 값으로 계산해준다.

<전체 코드>

n = int(input())

dis = list(map(int, input().split()))
cost = list(map(int, input().split()))
m = float('inf')
for i in range(n-1):
    if cost[i] < m:
        m = cost[i]
    else:
        cost[i] = m

cost.pop()
cost.reverse()
dis.reverse()

oil = 0
temp_len = 0
for i in range(n-2):
    if cost[i] < cost[i+1]:
        temp_len += dis[i]
        oil += temp_len*cost[i]
        temp_len = 0
    else:
        temp_len += dis[i]

temp_len += dis.pop()
oil += temp_len*cost.pop()

print(oil)
728x90
반응형