문제출처 : https://www.acmicpc.net/problem/2457
내가 시도한 code
#include <iostream>
using namespace std;
int bloom[100000][2] = { 0 };
int fallin[100000][2] = { 0 };
int main()
{
ios::sync_with_stdio(false);
int N, i, cnt = 0;
int month = 0, date = 0, max_month = 0, max_date = 0;
bool ispossible = true;
cin >> N;
for (i = 0; i < N; i++)
cin >> bloom[i][0] >> bloom[i][1] >> fallin[i][0] >> fallin[i][1];
for (i = 0; i < N; i++)
if (bloom[i][0] <= 3 && bloom[i][1] <= 31)
{
if (bloom[i][0] == 3 && bloom[i][1] > 1)
continue;
if (fallin[i][0] >= month)
{
if (fallin[i][0] == month && fallin[i][1] >= date)
date = fallin[i][1];
else
month = fallin[i][0], date = fallin[i][1];
}
}
if (month<3 || (month==3 &&date!=1))
ispossible = false;
if (ispossible)
{
cnt++;
ispossible = false;
for (i = 0; i < N; i++)
{
if (fallin[i][0] > 11)
ispossible = true;
else if (fallin[i][0] == 11 && fallin[i][1] == 30)
ispossible = true;
}
if (ispossible)
{
while ((month != 11 && date != 30) || month < 12)
{
month = max_month;
date = max_date;
for (i = 0; i < N; i++)
{
if (fallin[i][0] >= max_month && fallin[i][1] > max_date)
max_month = fallin[i][0], max_date = fallin[i][1];
}
cnt++;
}
cout << cnt;
}
else
cout << 0;
}
else
cout << 0;
return 0;
}
진짜 엄청 난잡하다;;
밤새 고민해봤지만 문제가 나한테 많이 어려운것 같다 ㅠㅠㅠㅠ
다른 블로그를 돌아봤는데, 아 ~ 이렇게 풀면 되겠구나 느꼈다.
당장 다시풀진 않고, 나중에 다시 한번 보면서 다시 시도해보겠다.