728x90
반응형
백준 13305 : 주유소
문제 내용
시간 제한 : 2 초
메모리 : 512 MB
문제
일직선 상의 n개 도시 순서대로 이동 (n: 2~10만)
- 노드 : 도시를 뜻하며, 숫자는 해당 도시에서의 기름값
- 간선 : 도시간의 도로길이 (1km이동 당 1리터 기름 사용)
입력
도시 개수 n
도로길이 순서대로 n-1개
주유소 리터당 가격 순서대로 n개
출력
모든 도시 이동하는 최소 비용
예제 입력 1
4
2 3 1
5 2 4 1
예제 출력 1
18
예제 입력 2
4
3 3 4
1 1 1 1
예제 출력 2
10
유형
풀이
이 문제는 그리디 알고리즘 문제이다.
기름값이 싼 도시에서 기름을 최대한 많이 구입하는게 이득이다.
이동을 위해 1번 도시에서는 무조건 기름 구매할 수 밖에 없다.
더 싼 가격으로 기름 구매할 수 있을 때까지 도시를 차례로 방문하며 도로길이 저장한다.
더 싼 도시가 나타나면 여태까지 저장한 도로길이*이전에 가장 싸게 구매할 수 있었던 기름값 으로 비용 계산 한다.
그리고 새로운 도시의 기름값으로 update 하고 위의 내용 반복한다.
import sys
n = int(sys.stdin.readline())
road_len = list(map(int, sys.stdin.readline().split()))
oil_price = list(map(int, sys.stdin.readline().split()))
cur_oil_price = oil_price[0]
total_price = 0
tmp_road_len = road_len[0]
for i in range(1, n-1):
if cur_oil_price <= oil_price[i]:
tmp_road_len += road_len[i]
else :
total_price += tmp_road_len * cur_oil_price
cur_oil_price = oil_price[i]
total_price += road_len[i] * cur_oil_price
tmp_road_len = 0
if tmp_road_len != 0:
total_price += tmp_road_len * cur_oil_price
print(total_price)
반응형
'Python > 백준 문제풀이' 카테고리의 다른 글
파이썬(python) 백준 14496 : 그대, 그머가 되어 (0) | 2021.05.19 |
---|---|
파이썬(python) 백준 2206 : 벽 부수고 이동하기 (0) | 2021.05.02 |
파이썬(python) 백준 7576 : 토마토 (0) | 2021.05.01 |
파이썬(python) 백준 2580 : 스도쿠 (0) | 2021.04.22 |
파이썬(python) 백준 1541 : 잃어버린 괄호 (0) | 2021.04.21 |