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';
}

 

🔗 코드 링크

🕧 결과