일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 백준온라인저지
- hackerrank
- 빅데이터를 지탱하는 기술
- MySQL
- BOT
- telegram
- 백준 온라인 저지
- Dynamic Programming
- Pseudo Lab
- 알고리즘
- terraform
- Python
- Airflow
- 2023년 목표
- leetcode
- 프로그래머스
- delete join
- Spark
- 데이터 엔지니어
- SQL
- docker container
- datacamp
- Data Engineering
- airflow architecture
- data_engineer
- 그리디
- docker
- docker image
- dsf
- airflow webserver
Archives
- Today
- Total
Lim Seunghyun Space
[백준 온라인 저지] 주유소 본문
문제 출처
문제 요구사항
- N개의 도시가 수평으로 존재하는 어떤 나라에서 수평의 제일 왼쪽의 도시에서 제일 오른쪽의 도시로 차를 타고 이동
- 인접한 두 도시 사이의 도로를 이동할 때 1Km마다 1L의 기름을 사용
- 최초 출발시에는 기름이 없어서 주유소에서 기름을 넣고 출발
- 각 도시에는 단 하나의 주유소가 존재하며, 리터당 가격이 도시마다 다를 수 있음
- 제일 왼쪽 도시에서 제일 오른쪽 도시를 이동하는데 사용하는 기름의 비용을 최소화 하도록 구성
나의 풀이(Python3)
# source : https://www.acmicpc.net/problem/13305
# 초기 자동차에 기름을 주유해야함
# 기름통의 크기는 무제한
# 이동시 1Km마다 1리터의 기름을 사용
# 각 도시마다 주유소가 하나씩 존재
# N = 도시의 갯수
import sys
N = int(sys.stdin.readline().strip()) # 도시의 수
city_dis = list(map(int, sys.stdin.readline().strip().split()))
gas_cost = list(map(int, sys.stdin.readline().strip().split()))
answer = 0
min_cost = 1000000001
for i in range(0, len(gas_cost)):
if min_cost > gas_cost[i]:
min_cost = gas_cost[i]
if i < len(city_dis):
answer += min_cost * city_dis[i]
print(answer)
- 비용을 최소화 시키기 위해서는 주유소의 리터당 가격이기 때문에 각 도시별 기름 비용을 순서대로 탐색하면서 최소의 비용을 계산
- 최초 기름 비용을 최댓값으로 설정
- 반복을 진행하면서 기름 비용이 최소인지 확인
- 도시를 이동하면서 최소 기름 비용과 거리의 곱셈으로 답안을 도출
Github
728x90
'Algorithm > 문제' 카테고리의 다른 글
[Leetcode] 4. Median of Two Sorted Arrays (0) | 2022.06.10 |
---|---|
[Leetcode] 3. Longest Substring Without Repeating Characters (0) | 2022.06.09 |
[백준 온라인 저지] ATM (0) | 2022.02.12 |
[백준 온라인 저지] 회의실 배정 (0) | 2022.02.10 |
[백준 온라인 저지] 로프 (0) | 2022.01.28 |