[Algorithm] 2979-트럭주차

gunggme·2023년 11월 17일

알고리즘

목록 보기
7/42

시작

이번 문제는 구현문제다 그렇다면 어떤방식을 사용해 푸는지 알아보자. 우선 입력을 알아야되는데 입력은 첫째 줄은 a, b, c의 값을 담는다는 것을 알 수 있다. 그렇다면, 이제 그 다음의 3줄의 입력을 알아야되는데 편하게 x, y로 표현하면 x부터 y까지의 시간을 저장한 뒤, 저장한 수에 맞는 금액을 채점 할것. 그렇다면 한번 간단하게 알고리즘을 작성해보자.

알고리즘

  1. a, b, c의 값을 입력 받고, 2개의 값을 3번 받음
  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;
}
profile
안녕하세요!

0개의 댓글