코딩 연습/Python

그리디 알고리즘 13305번

썬2 2021. 2. 5. 15:35

www.acmicpc.net/problem/13305

 

13305번: 주유소

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

www.acmicpc.net

import sys

# 입력받기
N = int(sys.stdin.readline())
meter = list(map(int, sys.stdin.readline().split()))
fuel = list(map(int, sys.stdin.readline().split()))

cost = 0
min_fuel = fuel[0]

# 계산
for i in range(N-1):
    if min_fuel >= fuel[i]:
        min_fuel = fuel[i]
    cost = cost + min_fuel*meter[i]

print(cost)

포인트:

  1. 2번째 주유소에 가려면 1번째 주유소에서 그 거리만큼 반드시 주유를 해야한다.

  2. 다음 주유소를 가기위해: 그동안 거쳐온 주유소들(다음 주유소들 제외!)에서의 최소 주유값을 찾아 거리만큼 주유를 한다.

 

느낀점:

문제에 그림도 있어서 어려워보인다는 생각이 먼저 들었는데, 차분히 읽으면서 그림그리다보니 생각보다 어렵지 않았다.