백준/Greedy
[그리디/백준] 13305번: 주유소
ydin
2022. 6. 27. 13:19
-문제: https://www.acmicpc.net/problem/13305
-정답풀이:
그때그때 최소의 기름값을 따로 저장한다음 각 거리에다 곱해주면 된다
그리디에서는 특정 값을 특정 변수에 누적하고, 조건에 따라 변경해주고 연산을 수행하면되는 것 같다
n=int(input())
distance = list(map(int,input().split()))
oil = list(map(int,input().split()))
final = oil[0]
result=0
for i in range(n-1):
if oil[i]<final:
final=oil[i]
result+=distance[i]*final
print(result)
-틀린 풀이
i번째 주유소 값에 i부터 n-1까지 거리의 합을 곱한 값과 한점씩 이동한 기름값을 비교해서 최솟값을 구하려고 했는데,
이렇게 하면 값을 어떻게 누적해야할지 몰라서 어려웠다.
결과적으로 이렇게 풀면 안된다는 얘기
n=int(input())
distance = list(map(int,input().split()))
oil = list(map(int,input().split()))
total=sum(distance)
final =0
for i in range(n-1):
final +=distance[i]*oil[i]
result=0
# 이전 값 그대로 이어가는 거 , 각자 더하는거
for i in range(n-1):
if final >= total*oil[i]:
result += distance[i]*oil[i]
elif final < total*oil[i]:
result += total*oil[i]
print(result)