Problem Solving
알고리즘 :: 백준 :: 2979 - 트럭주차
soreDemo
2025. 1. 7. 10:01
❔문제
🔄 문제 및 입출력 조건 파악
- 트럭은 총 3개
- 입력
- 1 ≤ 시간 ≤ 100
- (도착시간) (떠나는시간) 순으로, (도착시간) < (떠나는시간)
✏️ 문제풀이
- 시간 `t`일 때, 주차장에 차량이 몇 대있는지 정보를 담고있는 배열 `t`을 만듭니다.
- `(도착시간) (떠나는시간)`을 입력받았을 때, 배열 `t`는 `t[도착시간]`부터 `t[떠나는시간 - 1]`까지 1 증가합니다.
- 떠나는 시간은 해당 차량이 주차장을 이용하는 시간이 아니므로, 포함해서는 안 됩니다.
- 따라서 요금을 계산할 때 고려해야할 범위는 【도착시간, 떠나는시간) 입니다.
- 요금을 계산할 때 현재 주차장에 있는 차량 수를 놓치면 안 됩니다. (한 대: A원 / 분, 두 대: 2 × B원 / 분, 세 대: 3 × C원 / 분)
📝 코드
#include <bits/stdc++.h>
using namespace std;
int main() {
ios::sync_with_stdio(false), cin.tie(nullptr), cout.tie(nullptr);
int a, b, c;
cin >> a >> b >> c;
array<int, 101> t = {0,};
for (int i = 0; i < 3; ++i) {
int s, e;
cin >> s >> e;
while (s < e) t[s++] += 1;
}
int price{0};
for (auto it = t.begin(); it != t.end(); ++it) {
switch(*it) {
case 1: price += a; break;
case 2: price += (2 * b); break;
case 3: price += (3 * c); break;
}
}
cout << price << '\n';
}
🕧 결과