꾸준하게 거북이처럼

백준 13305 주유소 본문

Algorithm 문제 & 공부/그리디

백준 13305 주유소

somm12 2022. 6. 7. 16:25
 

13305번: 주유소

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

www.acmicpc.net

 

from cmath import inf


numOfCity = int(input())
cityDistance = list(map(int,input().split()))
cost = list(map(int,input().split()))

result = 0
lowerCost = inf

for i in range(numOfCity - 1):
    if cost[i] < lowerCost:
        result += cost[i] * cityDistance[i]
        lowerCost = cost[i]
    else:
        result += lowerCost * cityDistance[i]
print(result)

# 그리디 알고리즘은 항상 선택의 순간마다 당장 눈앞에 보이는 최적의 상황만을 쫓아 최종적인 해답을 찾는 알고리즘이다.
# 이 문제에서는 최소 비용을 구하는 것이기 때문에 최소 비용이 되기 위한 조건을 잘 생각하고 정리해서 코드를 짜야한다.
# 최소 비용이 나오려면 우선 리터 당 가격이 싼 도시의 cost를 최대한 사용하면 될 것이다.
# 하지만 최소로 가격이 싼 곳이 첫 번째 도시가 아닐 수 있기 때문에 차근차근 오른쪽으로 도시를 이동하면서
# 더 비용이 적은 도시를 선택해서 계산해 나가면 된다. 그렇게 되면 주어진 상황에서 최선으로 최소 비용을 구할 수 있다.

 

첫 번째 도시의 리터 당 가격이 그 다음 도시의 리터 당 가격보다 작으면, 작은 가격을 선택해서 distance를 곱해나가는 식으로 문제를 푼다.

'Algorithm 문제 & 공부 > 그리디' 카테고리의 다른 글

이코테: 모험가 길드 문제 파이썬  (0) 2023.01.29
백준 1339 파이썬  (0) 2022.11.26
회의실배정  (0) 2022.06.04
창고정리  (0) 2022.06.04
씨름선수  (0) 2022.06.04
Comments