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
반응형
'# Coding > # 백준' 카테고리의 다른 글
[백준 / 1013] Contact - Python (0) | 2021.12.02 |
---|---|
[백준 / 10974] 모든 순열 - Python (0) | 2021.07.26 |
[백준 / 11779] 최소비용 구하기 2 - Python (0) | 2021.07.23 |
[백준 / 14503] 로봇 청소기 - Python (0) | 2021.07.23 |
[백준 / 1912] 연속합 - Python (0) | 2021.07.13 |