Notice
Recent Posts
Recent Comments
Link
«   2026/02   »
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
Archives
Today
Total
관리 메뉴

hwooo

BOJ (C/C++) 13305번: 주유소 본문

Study/Algorithm

BOJ (C/C++) 13305번: 주유소

hwooo 2023. 5. 1. 21:38

풀이

출발할 때는 처음 도시의 기름 가격으로 처음 도로의 길이만큼 가야 하므로 초기값은 Road[0] * Oil[0]로 설정.두 번째 도시에 도착한 이후로는 i번째 도시의 기름 가격이 i-1번째 도시보다 크다면 i-1번째 도시에서 i+1번째 도시에 도달할 수 있을 만큼 주유하면 되므로 해당 로직을 반복하여 제일 오른쪽 도시까지 이동.(제일 오른쪽 도시의 값은 무시 가능)

코드

#include <stdio.h>
#include <vector>
#include <algorithm>
using namespace std;

vector <unsigned long long int> Road, Oil;
int main() {
	unsigned long long int N, r, o;
	scanf("%llu", &N);

	// input
	for (int i = 0; i < N - 1; i++) {
		scanf("%llu", &r);
		Road.push_back(r);
	}

	for (int i = 0; i < N; i++) {
		scanf("%llu", &o);
		Oil.push_back(o);
	}

	unsigned long long int money = Road[0] * Oil[0];
	o = Oil[0];
	for (int i = 1; i < N - 1; i++) {
		if (o > Oil[i]) o = Oil[i]; 	// 다음에 도시의 기름 가격이 더 싸다면 오일 가격 변경
		money += o * Road[i];
	}

	printf("%llu", money);
	return 0;
}

'Study > Algorithm' 카테고리의 다른 글

BOJ (C/C++) 1789번: 수들의 합  (0) 2023.05.01
BOJ (C/C++) 2217번: 로프  (0) 2023.05.01
BOJ (C/C++) 1931번: 회의실 배정  (0) 2023.05.01
BOJ (C/C++) 1541번: 잃어버린 괄호  (0) 2023.05.01
BOJ (C/C++) 2211번: 네트워크 복구  (0) 2023.04.28