
이번 문제는 구현문제다 그렇다면 어떤방식을 사용해 푸는지 알아보자. 우선 입력을 알아야되는데 입력은 첫째 줄은 a, b, c의 값을 담는다는 것을 알 수 있다. 그렇다면, 이제 그 다음의 3줄의 입력을 알아야되는데 편하게 x, y로 표현하면 x부터 y까지의 시간을 저장한 뒤, 저장한 수에 맞는 금액을 채점 할것. 그렇다면 한번 간단하게 알고리즘을 작성해보자.
알고리즘
- a, b, c의 값을 입력 받고, 2개의 값을 3번 받음
- 3번 받은 값을 배열에다 한다.
- 배열에서 값을 가져와 답을 구한다.
간단한 알고리즘을 작성해보았는데 이제 이 작성을 따라 한번 손으로 그려보자. 우선 2번에서 말한 배열에 담는 방법만 알면 되는데. 우선, 밑에 그림을 보자.
이런식으로 배열을 제작해 저장하면 되는데. 말 그대로 x부터 y 사이의 값의 인덱스를 배열에다 저장하면 된다.
#include<iostream>
#include<vector>
#include<string>
#include<algorithm>
using namespace std;
int sum = 0 ;
int a, b, c;
vector<int> arr(101);
void Solved(int n) {
if (n == 1) {
// 1개의 트럭 요금
sum += a;
}
if (n == 2) {
// 2대의 트럭 요금
sum += b * 2;
}
if (n == 3) {
// 3대의 트럭 요금
sum += c * 3;
}
}
int main() {
// 값 입력
cin >> a >> b >> c;
//값 입력
for (int i = 0; i < 3; i++) {
int x, y;
cin >> x >> y;
for (int j = x; j < y; j++) {
arr[j]++;
}
}
// 값 구하기
for (int i = 0; i < arr.size(); i++) {
// arr[i]의 값이 0이면 생략
if (arr[i] != 0) {
Solved(arr[i]);
}
}
cout << sum;
}