https://www.acmicpc.net/problem/2979
3대를 주차하려고 하는데 1대를 주차했을때, 2대, 3대를 주차했을 때 각각 주차 요금이 다르다. 총 주차 요금을 출력하는 문제다.
처음 코드를 작성했을 때는 int변수를 여러개 만들어서 얘네의 값을 변경하는 식으로 문제를 풀려고 했는데 굉장히 길어지고 복잡해져서 오류를 잡기 힘들었다.
이런 문제는 counting 배열로 풀어야 한다.
#include <iostream>
#include <algorithm>
#include<string>
using namespace std;
int main() {
int A, B, C, a, b;
int cnt[104] = {0,};
int sum=0;
cin >> A >> B >> C;
for (int i = 0; i < 3; i++) {
cin >> a >> b;
for (int j = a; j < b; j++) {
cnt[j]+=1;
}
}
for (int i : cnt) {
if (i == 1) sum += A;
if (i == 2) sum += B*2;
if (i == 3) sum += C * 3;
}
cout << sum << endl;
}