반응형
문제 설명
입출력 예제
풀이 코드
왼쪽에서 제일 오른쪽 도시로 이동하는 최소의 비용을 구하기 위해서는 가장 싼 주유소에서 기름을 넣는 것이 이득이다.
먼저 왼쪽에서 출발할 때는 기름이 없기 때문에 시작지점에서 먼저 기름을 넣고 시작하는데
가장 값이 싼 주유소를 찾기 위해 첫 번 째 주유소를 가장 값이 싼 주유소로 저장해 놓은 뒤
반복문을 통해 저장한 주유소와 현재 위치의 주유소의 기름 값을 비교해 가장 값이 싼 주유소를 갱신해서 기름을 넣으면 된다.
정답 코드
import sys
input = sys.stdin.readline
n = int(input())
distances = list(map(int, input().split()))
oilCosts = list(map(int, input().split()))
total = distances[0] * oilCosts[0]
minCost = oilCosts[0] # 가장 값이 싼 주유소
for cur in range(1, n - 1):
# 가장 값이 싼 주유소가 현재 주유소보다 비쌀 경우 현재 주유소를 가장 싼 주유소로 바꿔준다.
if minCost > oilCosts[cur]:
minCost = oilCosts[cur]
total += minCost * distances[cur]
print(total)
'◼ 코딩테스트 > 그리디 (Greedy)' 카테고리의 다른 글
[Python/파이썬] 백준 1541 - 잃어버린 괄호 (0) | 2023.06.29 |
---|---|
[Python/파이썬] 백준 1931 - 회의실 배정 (0) | 2023.06.28 |
[Java/자바] 프로그래머스 Lv2 - 조이스틱 (Greedy/탐욕법) (0) | 2023.05.02 |
[Java/자바] 프로그래머스 Lv2 - 구명보트 (greedy 탐욕법) (2) | 2023.01.03 |
[Java/자바] 프로그래머스 - 체육복/Greedy(탐욕법) 알고리즘 (0) | 2022.11.30 |