코딩테스트/BOJ

[백준] [그리디] 13305 주유소

박소민 2023. 7. 11. 17:43
13305 주유소
 

13305번: 주유소

표준 입력으로 다음 정보가 주어진다. 첫 번째 줄에는 도시의 개수를 나타내는 정수 N(2 ≤ N ≤ 100,000)이 주어진다. 다음 줄에는 인접한 두 도시를 연결하는 도로의 길이가 제일 왼쪽 도로부터 N-1

www.acmicpc.net

 

  • 내 풀이

1. for문 돌면서 거리를 리터당 가격이 더 작은 값이 나올때까지 tmp에 거리를 더해간다
2. 더 작은 값이 나오면 앞의 tmp로 비용 더해준 후
3. tmp를 초기화하고, 최소비용 저장한 후 다시 1번 반복
-> 리터값을 힙에 넣으면 min쓸필요없이 바로 가능

 

 

N = int(input())

roads = list(map(int,input().split()))
costs = list(map(int,input().split()))

# 첫번째 값 더하기
min_price = roads[0] * costs[0]

# 가장 값이 싼 주유소 지정
min_cost = costs[0]

for i in range(1, N-1):
  if min_cost > costs[i]: # 가장 값이 싼 주유소가 현재 주유소 보다 비싸면 바꿔준다.
    min_cost = costs[i] # 값 싼 주유소로 바꿔주기
  
  min_price += min_cost * roads[i]

print(min_price)

 

'코딩테스트 > BOJ' 카테고리의 다른 글

[백준] [그리디] 1449. 수리공 항승  (0) 2023.07.11
[백준] [그리디] 16953. A → B  (0) 2023.07.11
[백준] [구현] 14719. 빗물  (0) 2023.07.08
[BFS] 14620. 꽃길  (0) 2023.07.08
[백준] [BFS][그룹화] 2573. 빙산  (0) 2023.07.08