반응형
문제 링크 : https://www.acmicpc.net/problem/13305
풀이
#리스트 생성
city_num = int(input())
liter_lst = list(map(int,input().split()))
cost_lst = list(map(int,input().split()))
#처음 시작 비용 설정
min_liter = cost_lst[0]
answer = 0
#휴게소에서 더 작은 코인(비용)이 생기면 갱신 아니면 기존 비용으로 계산
for coin,liter in zip(cost_lst[:-1],liter_lst):
if coin <= min_liter:
min_liter = coin
answer += min_liter*liter
else:
answer += min_liter*liter
print(answer)
- 휴게소에서 더 작은 코인(비용)이 생기면 갱신 아니면 기존 비용으로 계산이라는 방법을 떠올리니 쉽게 해결 되었다.
- for문에서 zip을 사용하면 길이가 같지만 서로 다른 리스트를 튜플형태로 묶어준다
- 문제에서 도시의 수인 N의 조건이 100,000이하 였는데 보통 10만이면 이중반복문을 했을때 시간초과가 나기에 한번만에 푸는 방법을 생각해야한다. N이 1000이하일때는 이중반복문을 사용해도 된다.
- 참고! 문제의 입력 크기와 알고리즘의 구현에 따라서 시간 초과가 발생할 수 있는 시점은 다르다.
반응형
'알고리즘' 카테고리의 다른 글
[BOJ/백트래킹] N과 M (2) (0) | 2023.05.23 |
---|---|
[BOJ/완전탐색] 1018 체스판 다시 칠하기 (0) | 2023.05.23 |
[BOJ/그리디] 1931 회의실배정 (0) | 2023.05.15 |
[BOJ/그리디] 1541 잃어버린 괄호 (0) | 2023.05.15 |
[BOJ/그리디] 11047 동전 0 (0) | 2023.05.15 |