백준 알고리즘(C++)
백준 2979번 트럭 주차(C++)
coding232624
2023. 12. 5. 21:25
문제
https://www.acmicpc.net/problem/2979
2979번: 트럭 주차
첫째 줄에 문제에서 설명한 주차 요금 A, B, C가 주어진다. (1 ≤ C ≤ B ≤ A ≤ 100) 다음 세 개 줄에는 두 정수가 주어진다. 이 정수는 상근이가 가지고 있는 트럭이 주차장에 도착한 시간과 주차장
www.acmicpc.net
해설
1대가 주차되었을때, 2대가 주차되었을때, 3대가 주차되었을때 각각 가격이 다르다
이때 때문에 차량별로 들어오는 시간 - 나가는 시간이 주어지기 때문에 해당 시간을 나타내는 배열 위치에 차량 수를 +1 해준다
그렇게 하면 차량이 없는 칸은 0 / 1대는 1 / 2대는 2 / 3대는 3이되어 각 값에 따라 가격*차량수 를 결과에 더해주면 된다
코드
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
|
#include<bits/stdc++.h>
using namespace std;
//시간별로 몇대의 트럭이 있는지 저장할 배열생성력
int A,B,C;
int cnt[101];
int ain,aout,bin,bout,din,dout;
int sum = 0;
int main(){
cin >> A >> B >> C;
cin >> ain >> aout;
cin >> bin >> bout;
cin >> din >> dout;
//들어간시간~나간시간 주차된 트럭수 카운팅
for(int i = ain; i<aout;i++) cnt[i]++;
for(int i = bin; i<bout;i++) cnt[i]++;
for(int i = din; i<dout;i++) cnt[i]++;
//시간*가격으로 결과값 출
for(int i = 1; i<=100; i++){
if(cnt[i] == 1) sum += A;
else if(cnt[i] == 2) sum += (2*B);
else if(cnt[i] == 3) sum += (3*C);
}
cout << sum;
return 0;
}
|
cs |