티스토리 뷰

문제링크 : https://www.acmicpc.net/problem/14469

 

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int, int> pii;
const int MAX = INT_MAX;

int N, a, b;
vector<pii>v;

int main()
{
    ios_base::sync_with_stdio(0); 
	cin.tie(0);

    cin >> N;

    for(int i=0; i<N; i++)
    {
        cin >> a >> b;
        v.push_back({a, b});
    }

    sort(v.begin(), v.end());
    int time = v[0].first + v[0].second;

    for(int i=1; i<N; i++)
    {
        time = max(time, v[i].first); //시작시간
        time += v[i].second; //검문시간 더해주기
    }

    cout << time;

    return 0;
}

 

간단한 정렬문제이다.

처음 도착시간을 기준으로 정렬을 해준다.

이후 해당 도착시간 + 검문시간을 해주면 다음 소의 출발시간이 된다.

 

첫 번째 소의 해당 출발 시간을 기준으로 해당 출발 시간과 다음 소의 도착 시간 중 큰 값을 고르고,

여기에 해당 소의 검문 시간을 더해 또 다음 소의 출발시간이 된다.

 

이런식으로 누적하여 갱신된 출발시간에 계속하여 검문시간이 더해진 것이 최종 결과값이 된다.

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/07   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
글 보관함