문제
13305번: 주유소
표준 입력으로 다음 정보가 주어진다. 첫 번째 줄에는 도시의 개수를 나타내는 정수 N(2 ≤ N ≤ 100,000)이 주어진다. 다음 줄에는 인접한 두 도시를 연결하는 도로의 길이가 제일 왼쪽 도로부터 N-1
www.acmicpc.net
코드
#include <vector>
#include <iostream>
using namespace std;
int main() {
vector<long> dis(100001, 0);
long N, temp, price = 1000000000, result = 0;
cin >> N;
for (int i = 0; i < N-1; i++)
cin >> dis[i];
for (int i = 0; i < N; i++) {
cin >> temp;
if (temp < price)
price = temp;
result += price * dis[i];
}
cout << result;
}
풀이
1. 각 도시 사이의 거리를 벡터 dis에 저장한다. 기본 수치가 큰 문제이므로 변수들을 long 타입으로 초기화한다.
(*빠른 저장을 위해 dis의 크기를 N의 최댓값으로 미리 설정한 후 모든 값을 0으로 설정했음)
2. 휘발유 가격을 저장하는 변수에는 미리 휘발유의 최댓값을 저장한다.
3. 휘발유 가격을 입력받으며 기존의 휘발유 가격과 비교한 후, 기존 가격보다 저렴하면 휘발유 가격을 재설정한다.
4. result에 휘발유 비용(가격*다음 도시까지의 거리)을 더한다.
'코테 > Greedy' 카테고리의 다른 글
[java] 프로그래머스스쿨 연습문제 Lv.2 Greedy 문제 모음 (0) | 2023.04.28 |
---|---|
[C/C++] 백준 1541, Greedy (0) | 2023.02.09 |
[C/C++] 백준 11399, Greedy (0) | 2023.02.09 |
[C/C++] 백준 1931, Greedy (0) | 2023.02.09 |
[C/C++] 프로그래머스 스쿨 무지의 먹방라이브, Greedy (0) | 2023.02.08 |