백준 알고리즘(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