문제
https://www.acmicpc.net/problem/13305
13305번: 주유소
표준 입력으로 다음 정보가 주어진다. 첫 번째 줄에는 도시의 개수를 나타내는 정수 N(2 ≤ N ≤ 100,000)이 주어진다. 다음 줄에는 인접한 두 도시를 연결하는 도로의 길이가 제일 왼쪽 도로부터 N-1
www.acmicpc.net
n개의 도시를 연결하는 도로의 길이와 주유소의 리터당 가격이 주어진다. 주유소에서 기름을 넣고 출발해야 하는데, 제일 왼쪽 도시부터 제일 오른쪽 도시로 가는 최소 비용을 구하는 문제다.
예시
Example 1:
Input: 4
2 3 1
5 2 4 1
Output: 18
Example 2:
Input: 4
3 3 4
1 1 1 1
Output: 10
풀이
import sys
input = sys.stdin.readline
n = int(input())
road_len = list(map(int, input().split()))
price = list(map(int, input().split()))
# 첫 번째 주유소의 가격을 최소 가격으로 초기화
min_price = price[0]
ans = 0
for i in range(n - 1):
# 현재 도시의 주유소 가격이 현재까지 최소 가격보다 작으면 최소 가격 업데이트
if min_price > price[i]:
min_price = price[i]
# 현재 도로를 이동하는데 드는 비용 계산
ans += (min_price * road_len[i])
print(ans)
- 그리디 알고리즘을 활용하여 각 단계에서 최적의 선택을 하며 최소 비용을 구한다.
- 첫 번째 주유소의 가격으로 최소 가격을 초기화하고, 반복문을 통해 마지막 도시 전까지 각 도시를 탐색하며 주유소 최소 가격과 거리를 곱해 비용을 계산한다.
'알고리즘' 카테고리의 다른 글
[백준(BOJ)] 11000번 강의실 배정 - 파이썬/python (0) | 2024.01.19 |
---|---|
[백준(BOJ)] 1946번 신입 사원 - 파이썬/python (0) | 2024.01.18 |
[백준(BOJ)] 11399번 ATM - 파이썬/python (0) | 2024.01.18 |
[백준(BOJ)] 5052번 전화번호 목록 - 파이썬/python (0) | 2024.01.17 |
[백준(BOJ)] 2108번 통계학 - 파이썬/python (0) | 2024.01.17 |