[BOJ] 주유소

Minsu Han·2022년 12월 8일
0

알고리즘연습

목록 보기
61/105

코드

from sys import stdin
input = stdin.readline

# input
N = int(input())    # 도시 개수
distances = list(map(int, input().split()))    # 다음 도시까지의 거리
prices = list(map(int, input().split()))    # 도시별 리터당 가격

# 현재 도시에서 시작하여 리터당 가격이 현대 도시보다 작은 도시가 나올 때까지는 현대 도시의 리터당 가격을 기준으로 주유한다.

minPrice = prices[0]    # 현재 최소 리터당 가격
ans = 0    # 총 가격
for i in range(N-1):
    # 현재 도시의 리터당 가격이 현재 최소 리터당 가격보다 저렴한 경우 minPrice 갱신
    if prices[i] < minPrice:
        minPrice = prices[i]
    # 현재 최소 리터당 가격 x 다음 도시까지의 거리 값을 총 가격에 합산
    ans += minPrice * distances[i]

print(ans)

결과

image


풀이 방법

  • 현재 도시에서 시작하여 리터당 가격이 현재 도시보다 작은 도시가 나올 때까지는 현재 도시의 리터당 가격을 기준으로 주유하고,
  • 리터당 가격이 현재 도시보다 작은 도시서부터는 최소 리터당 가격(minPrice)을 갱신하여 위와 같이 주유한다.
  • 자세한 내용은 코드의 주석으로 대체하였다.

profile
기록하기

0개의 댓글