백준/실버
[백준 14469번] 소가 길을 건너간 이유 3 (C++)
게임개발기원
2024. 6. 27. 18:49
문제링크 : 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;
}
간단한 정렬문제이다.
처음 도착시간을 기준으로 정렬을 해준다.
이후 해당 도착시간 + 검문시간을 해주면 다음 소의 출발시간이 된다.
첫 번째 소의 해당 출발 시간을 기준으로 해당 출발 시간과 다음 소의 도착 시간 중 큰 값을 고르고,
여기에 해당 소의 검문 시간을 더해 또 다음 소의 출발시간이 된다.
이런식으로 누적하여 갱신된 출발시간에 계속하여 검문시간이 더해진 것이 최종 결과값이 된다.