[백준/BOJ] 6068. 시간 관리하기 [Gold 5]

jychan99·2022년 1월 30일
0
post-thumbnail
  1. 시간 관리하기

문제출처 : https://www.acmicpc.net/problem/6068

code

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

int main()
{
    int N, i, time;
    cin >> N;
    vector<pair<int, int>> arr(N);
    for (i = 0; i < N; i++)
        cin >> arr[i].second >> arr[i].first;

    sort(arr.begin(), arr.end(),greater<>());

    time = arr[0].first - arr[0].second;

    for (i = 1; i < N; i++)
    {
        if (time <= arr[i].first)
            time -= arr[i].second;
        else
        {
            time = arr[i].first;
            time -= arr[i].second;
        }
    }

    if (time > 0)
        cout << time;
    else
        cout << -1;

    return 0;
}

pair로 묶어서 내림차순정렬후에,
거꾸로, 거슬러올라가다보면 나중에 결과가 음수 또는 양수로 나오는데,
양수로 나오면 늦잠을 자도된다는 뜻이고,
음수가 나오면 아무리 일찍일어나도 모든 일을 끝낼수가 없다는 뜻이므로 -1을 출력해준다.

골드문제가 대체적으로 어렵다고 느꼈었는데, 생각보다 쉬운듯.

profile
내가 지금 두려워 하고 있는 일이 바로 내가 지금 해야 할 일이다. 🐥

0개의 댓글