본문 바로가기
Algorithm/백준 문제풀이

[python] 13305번 - 주유소

by B_Tori 2021. 11. 24.

문제

파이썬 풀이

기름 값의 최소 비용을 구하는 문제이다.

최소 비용을 저장해두는 변수를 하나 선언한 뒤 이보다 작은 기름 값이 나오면 최소 비용을 갱신한다.

따라서 최소 비용이 갱신되기 전까지는 이전까지의 최소 비용을 이용해 이동을 하고 새로운 최소 비용이 갱신되면 해당 비용으로 이동을 진행하면 된다.

import sys
from typing import Mapping
input = sys.stdin.readline

N = int(input().rstrip())
road_length = list(map(int, input().rstrip().split()))
oil_price = list(map(int, input().rstrip().split()))

result = 0

min_price = oil_price[0]

for index, road in enumerate(road_length) :
  if min_price > oil_price[index] :
    min_price = oil_price[index]
  result += (min_price * road)

print(result)

길을 저장한 배열을 기준으로 for문을 순회한다.

(길을 기준으로 하게 되면 기름 배열보다 1개 모자라지만 어차피 마지막 도시에서의 기름은 넣을 일이 없기 때문에 마지막 기름값을 사용할 일은 없다.)

현재 저장된 min_price보다 작은 기름 값을 만나면 min_price를 갱신한다.

갱신한 뒤 (혹은 갱신을 하지 않았더라도) min_price는 지금까지의 최솟값이므로 현재 최솟값을 가지고 길을 이동한 값을 result에 더해준다.

'Algorithm > 백준 문제풀이' 카테고리의 다른 글

[python] 1260번 - DFS와 BFS  (0) 2021.12.07
[python] 11047번 - 동전 0  (0) 2021.11.24
[python] 1931번 - 회의실 배정  (0) 2021.11.23
[python] 1541번 - 잃어버린 괄호  (0) 2021.11.23
[python] 2108번 - 통계학  (0) 2021.09.08

댓글