728x90
반응형
https://www.acmicpc.net/problem/7983
7983번: 내일 할거야
내일(1일)부터 연속으로 최대 며칠 동안 놀 수 있는지를 출력한다. 가령, 답이 0이면, 내일 과제를 해야 하며, 1 이면, 모레에 과제를 해야 한다.
www.acmicpc.net
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
bool compare(pair<int, int>& a, pair<int, int>& b){
return a.second > b.second;
}
int main() {
int n, d, t;
cin >> n;
vector<pair<int, int>> v;
for(int i = 0; i < n; i++){
cin >> d >> t;
v.push_back({d, t});
}
sort(v.begin(), v.end(), compare);
int day = v[0].second;
for(int i = 0; i < n; i++){
int tmp = 0;
if(v[i].second < day) day = v[i].second;
day -= v[i].first + tmp;
}
if(day < 0) cout << 0 << endl;
else cout << day << endl;
return 0;
}
먼저 각 과제를 끝내야 하는 시간 순으로 정렬한다.
첫 번째 과제가 끝나는 시간을 day로 놓고 걸리는 시간을 빼주면 시작하는 시간이 된다.
다음 과제가 이전 과제를 시작하는 시간보다 빠르면 다음 과제가 끝나는 시간을 day로 놓고 걸리는 시간을 빼고,
다음 과제가 이전 과제를 시작하는 시간과 같거나 늦으면 기존 day에서 걸리는 시간을 빼는 과정을 반복한다.
728x90
반응형
'Algorithm > BAEKJOON' 카테고리의 다른 글
[BOJ] 10868번 최솟값 (C++) (0) | 2022.02.22 |
---|---|
[BOJ] 20115번 에너지 드링크 (C++) (0) | 2022.02.21 |
[BOJ] 11505번 구간 곱 구하기 (C++) (0) | 2022.02.20 |
[BOJ] 2042번 구간 합 구하기 (C++) (0) | 2022.02.19 |
[BOJ] 12018번 Yonsei TOTO (C++) (0) | 2022.02.19 |