본문 바로가기

Algorithm/Greedy

[Python] 백준 13305번 : 주유소 (S4) - 그리디단계별5 ★

#문제

www.acmicpc.net/problem/13305

 

13305번: 주유소

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

www.acmicpc.net

#풀이 & 학습한 내용

"최소 비용으로 주유하여 일직선 도로를 달리는 문제"입니다. 처음에는 주유에 대응되는 도로를 모두 모아서 계산하는 방식으로 문제를 해결했지만, 상당히 비효율적이었고, 그저 도로마다 최소의 기름값을 곱해주어 더해주는 방식으로 변경했습니다.

 

#소스코드

1
2
3
4
5
6
7
8
9
10
11
12
13
= int(input())
roads = list(map(int,input().split()))
oils = list(map(int,input().split()))
won = 0
 
oil = oils[0]
 
#도로 한개마다 계산해서 더해주기
for i in range(len(roads)):
  if oils[i] <= oil:
    oil = oils[i]
  won += oil * roads[i]
print(won)
cs

 

github.com/HoYoungChun/Algorithm_PS/blob/master/Greedy/BOJ_13305.py

 

HoYoungChun/Algorithm_PS

Baekjoon Online Judge, Programmers problem solving by Python, C++ - HoYoungChun/Algorithm_PS

github.com