반응형
문제
https://www.acmicpc.net/problem/13305
13305번: 주유소
표준 입력으로 다음 정보가 주어진다. 첫 번째 줄에는 도시의 개수를 나타내는 정수 N(2 ≤ N ≤ 100,000)이 주어진다. 다음 줄에는 인접한 두 도시를 연결하는 도로의 길이가 제일 왼쪽 도로부터 N-1
www.acmicpc.net
코드
n = int(input())
road = list(map(int, input().split()))
cost = list(map(int, input().split()))
min_cost = cost[0]
ans = 0
for i in range(n-1):
if cost[i] < min_cost:
min_cost = cost[i]
ans += min_cost * road[i]
print(ans)
설명
우선 min_cost를 통해 최저가인 가격을 저장해 준다.
이후 주유소를 차례대로 지나게 되는데,
만약 지나가는 주유소의 가격이 이전 가격보다 낮다면 최저가를 갱신해 준다.
지나는 주유소의 가격이 현재 가격보다 낮다면 지금까지 온 비용을
'기존 최저가 * 지나온 길'의 계산식으로,
지나는 주유소의 가격이 현재 가격보다 높다면
'현재 최저가 * 지나온 길'의 계산식을 사용한다.
Ex) 지금까지 지나온 주유소의 최저가: 3, 현재 주유소의 가격: 2, 지나온 길의 길이: 3이라고 가정하면,
지금까지의 길은 3*3의 계산식으로 9원이 도출되고 앞으로는 2원보다 낮은 값이 나올 때까지 2원의 기름으로 가게 된다.
그렇지 않다면 기존의 주유소에서 넣어서 왔다고 가정하고 가격을 더해주는 방식이다.
이후 정답을 출력해 준다.
반응형
'개발 연습장 > 백준 문제풀이' 카테고리의 다른 글
[파이썬, Python] 백준 10773: 제로 (0) | 2023.03.06 |
---|---|
[파이썬, Python] 백준 10828: 스택 (0) | 2023.03.03 |
[파이썬, Python] 백준 11399: ATM (0) | 2023.03.01 |
[파이썬, Python] 백준 1676: 팩토리얼 0의 개수 (0) | 2023.02.28 |
[파이썬, Python] 백준 11050: 이항 계수 1 (0) | 2023.02.27 |