-문제: 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)
'백준 > Greedy' 카테고리의 다른 글
[그리디/백준] 1715번: 카드 정렬 (0) | 2022.06.29 |
---|---|
[그리디/백준] 1946번: 신입 사원 (0) | 2022.06.27 |
[그리디/백준] 10610번: 30 (0) | 2022.06.26 |
[그리디/백준] 2217번: 로프 (0) | 2022.06.24 |
[그리디/백준] 1541번: 잃어버린 괄호 (0) | 2022.06.24 |