코딩테스트/백준
백준 [13305] - 주유소
문제
아이디어
: 리터 당 가격이 최솟값인 것을 기준으로 움직인다고 생각하기!
: 첫 도시의 주유소의 리터 당 가격을 최솟값으로 시작 → 이후에 이동하다가 해당 가격보다 더 싼 주유소를 발견? → 최솟값 갱신
작성한 코드
N = int(input())
km = list(map(int, input().split()))
price = list(map(int, input().split()))
total = 0
min_price = price[0]
for i in range(N-1):
if min_price > price[i]:
min_price = price[i]
total += (min_price * km[i])
print(total)
- 첫째줄 : 도시의 개수 → N
- 둘째줄 : 각 도시간의 거리 → km (공백을 기준으로 list에 저장)
- 셋째줄 : 각 도시의 주유소의 리터 당 가격 → price (공백을 기준으로 list에 저장)
- 왼쪽 → 오른쪽 도시로 이동하는 최소의 비용 → total (0으로 초기화)
- 처음에는 price의 0번째 인덱스의 값을 최솟값(min_price)라고 생각한다.
- 거리는 N-1개이기 때문에, range(N-1) 만큼만 for문을 돌려준다.
- 이때 min_price와 비교해서, min_price보다 작다면 갱신시켜주고 → min_price에 거리를 곱해줘서 total에 누적합을 해준다.
- 최종적으로 total의 값을 print()로 출력해준다.
반응형
'코딩테스트 > 백준' 카테고리의 다른 글
백준[2231] - 분해합 (0) | 2023.02.11 |
---|---|
백준[2798] - 블랙잭 (0) | 2023.02.11 |
백준 [1541] - 잃어버린 괄호 (0) | 2023.02.07 |
백준 [11399] - ATM (0) | 2023.02.07 |
백준 [1931] - 회의실 배정 (0) | 2023.02.02 |
댓글