[白俊]13305号ガソリンスタンド/Java,Python
Baekjoon Online Judge
algorithm practice
-問題を逐次解く
16.階調アルゴリズム
特定の状況で成立したグリディアルゴリズムを学びましょう.
Java/Python
ガソリンスタンド
13305号
最低コストで給油して直線道路を走行する問題
この問題は入力した都市の原油価格の降順に、都市ごとの距離を乗じて加算すればいいのです!
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
import java.util.StringTokenizer;
public class Main{
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
long[] cost = new long[N]; // 비용을 위한 변수
long[] dist = new long[N-1]; // 거리를 위한 변수
long sum = 0;
// 거리 입력
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
for(int i = 0; i < N - 1; i++) {
dist[i] = Long.parseLong(st.nextToken());
}
// 기름값 입력
st = new StringTokenizer(br.readLine(), " ");
for(int i = 0; i < N; i++) {
cost[i] = Long.parseLong(st.nextToken());
}
long min_cost = cost[0]; // 주유 최소 비용
for(int i = 0; i < N - 1; i++){
if(cost[i] < min_cost){
min_cost = cost[i];
}
sum += (min_cost * dist[i]);
}
System.out.println(sum);
}
}
import sys
N = int(sys.stdin.readline())
dist = []
cost = []
dist = list(map(int, sys.stdin.readline().split()))
cost = list(map(int, sys.stdin.readline().split()))
result = 0
min_cost = cost[0]
for i in range(N - 1):
if cost[i] < min_cost:
min_cost = cost[i]
result += min_cost * dist[i]
print(result)
Reference
この問題について([白俊]13305号ガソリンスタンド/Java,Python), 我々は、より多くの情報をここで見つけました https://velog.io/@jini_eun/백준-13305번-주유소-Java-Pythonテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol