# 본인 풀이
#include <bits/stdc++.h>
using namespace std;
int main(){
ios::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
// a -> 1대 주차시 분당요금
// b -> 2대 주차시 분당요금
// c -> 3대 주차시 분당요금
int arr[3];
int A[2];
int B[2];
int C[2];
int result[100] = { 0 };
for (int i = 0; i < 3; i++)
{
cin >> arr[i];
}
for (int i = 0; i < 2; i++){
cin >> A[i];
}
for (int i = 0; i < 2; i++){
cin >> B[i];
}
for (int i = 0; i < 2; i++){
cin >> C[i];
}
for (int i = A[0]; i < A[1]; i++){
result[i]++;
}
for (int i = B[0]; i < B[1]; i++){
result[i]++;
}
for (int i = C[0]; i < C[1]; i++){
result[i]++;
}
int sum = 0;
for (int val : result)
{
switch (val)
{
case 1:
sum += arr[0];
break;
case 2:
sum += arr[1] * 2;
break;
case 3:
sum += arr[2] * 3;
break;
default:
break;
}
}
cout << sum << "\n";
return 0;
}
arr
배열에 각각 A, B, C 요금을 할당한다.- 세줄에 걸쳐 입력받는 각 트럭의 주차 범위를 A,B,C 배열에 저장한다.
- 각 배열 최솟값(0번째 인덱스) ~ 최댓값(1번째 인덱스)까지 순회하며
result
배열 인덱스 값에 +1을 더해준다. 이는 해당 시간에 주차된 트럭 수를 저장하게 되는 것이다. result
를 순회하며 최종 주차비용을 계산한다. 분당, 트럭 대수만큼 계산해야함에 주의하자. 트럭이 떠난 시간 또한 제외해야한다.
배열 0으로 초기화
배열 전체를 0으로 초기화하려면 int arr[100] = {0};
이와 같이 코드를 작성하면 된다.
# 개선된 코드
- 입출력에 대한 어색함으로 A,B,C 행렬들을 마련했는데, 굳이 그럴 필요 없었음.
cin
개행문자는 공백 기준으로도 자동 입력해준다.
#include <bits/stdc++.h>
using namespace std;
int A, B, C, a, b, cnt[104], ret;
int main()
{
ios::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
cin >> A >> B >> C;
for (int i = 0; i < 3; i++)
{
cin >> a >> b;
for (int j = a; j < b; j++){
cnt[j]++;
}
}
for (int j = 1; j < 100; j++){
if(cnt[j]){
if(cnt[j] == 1){
ret += A;
}else if(cnt[j] == 2){
ret += B * 2;
}else if(cnt[j] == 3){
ret += C * 3;
}
}
}
cout << ret << "\n";
return 0;
}