1. 문제 접근
- 자동차 3대가 얼마나 같이 주차되어있느냐를 카운팅 배열로 접근해서, [도착 시간, 출발 시간) 범위를 카운트해줘야 함
2. 시행착오
- 시간 문제를 다룰 때는(도착/출발, 시작/끝나는시간) 무조건 이상, 미만 구간을 적용해야 한다.
- ex. 도착시간:1 / 출발시간:3 => 실제 시간은 2이다.
- 따라서 [1, 3) 이렇게 해야 한다.
end
변수 잘못 활용
end()
는 std
라이브러리에서 사용되는,iterator return할 때 사용됨
- 따라서 사용하면 안된다. =>
end
를 end_t
로 바꿈
3. 코드 및 풀이
3.1 배열을 활용한 풀이
- 따라서 다음과 같이 카운팅 배열을 활용해서 구하면 된다.
- 마지막에 100을 포함하지 않는 것도, 입력이 100까지만 들어오고, 시간 문제 특성 상 출발시간은 count되지 않기에 제외가 가능
#include <bits/stdc++.h>
using namespace std;
int arr[101];
int a, b, c;
int start_t, end_t;
int sum = 0;
void countCars(int start_t, int end_t){
for(int i = start_t; i < end_t; i++) {
arr[i]++;
}
return;
}
int main(){
cin >> a >> b >> c;
for(int i = 0; i < 3; i++){
cin >> start_t >> end_t;
countCars(start_t, end_t);
}
for(int i = 1; i < 100; i++){
if(arr[i] == 1) sum += a;
else if(arr[i] == 2) sum += 2 * b;
else if(arr[i] == 3) sum += 3 * c;
}
cout << sum;
}
Reference