알고리즘/BOJ

백준 2457번 공주님의 정원

꾸준함. 2019. 10. 22. 10:44

문제 링크입니다: https://www.acmicpc.net/problem/2457

 

2457번: 공주님의 정원

첫째 줄에는 꽃들의 총 개수 N (1<=N<=100,000)이 주어진다. 다음 N개의 줄에는 각 꽃이 피는 날짜와 지는 날짜가 주어진다. 하나의 날짜는 월과 일을 나타내는 두 숫자로 표현된다. 예를 들어서, 3 8 7 31은 꽃이 3월 8일에 피어서 7월 31일에 진다는 것을 나타낸다. 

www.acmicpc.net

회의실 문제와 비슷하지만 날짜가 존재하기 때문에 처리하기 까다로운 문제였습니다.

달에 해당하는 숫자에 100을 곱해준다면 MMdd 와 같은 형식이 되기 때문에 처리하기 수월해집니다!(M = month, d = day)

 

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main(void)
{
ios_base::sync_with_stdio(0);
cin.tie(0);
int N;
cin >> N;
vector<pair<int, int>> v;
for (int i = 0; i < N; i++)
{
pair<int, int> a, b;
cin >> a.first >> a.second >> b.first >> b.second;
// MMdd
v.push_back({ a.first * 100 + a.second, b.first * 100 + b.second });
}
sort(v.begin(), v.end());
int idx = -1;
int temp = 0;
int result = 0;
// 3월 1일부터 11월 30일
for (int i = 301; i <= 1130 && idx < N; i = temp)
{
bool flag = false;
idx++;
for (int j = idx; j < v.size(); j++)
{
if (v[j].first > i)
{
break;
}
if (temp < v[j].second)
{
temp = v[j].second;
idx = j;
flag = true;
}
}
if (flag)
{
result++;
}
else
{
cout << 0 << "\n";
return 0;
}
}
cout << result << "\n";
return 0;
}
view raw .cpp hosted with ❤ by GitHub

개발환경:Visual Studio 2017

 

지적, 조언, 질문 환영입니다! 댓글 남겨주세요~

반응형

'알고리즘 > BOJ' 카테고리의 다른 글

백준 16120번 PPAP  (0) 2019.10.22
백준 2012번 등수 매기기  (0) 2019.10.22
백준 3036번 링  (0) 2019.10.21
백준 15736번 청기 백기  (0) 2019.10.21
백준 1145번 적어도 대부분의 배수  (0) 2019.10.21