문제링크 : 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;
}
간단한 정렬문제이다.
처음 도착시간을 기준으로 정렬을 해준다.
이후 해당 도착시간 + 검문시간을 해주면 다음 소의 출발시간이 된다.
첫 번째 소의 해당 출발 시간을 기준으로 해당 출발 시간과 다음 소의 도착 시간 중 큰 값을 고르고,
여기에 해당 소의 검문 시간을 더해 또 다음 소의 출발시간이 된다.
이런식으로 누적하여 갱신된 출발시간에 계속하여 검문시간이 더해진 것이 최종 결과값이 된다.
'백준 > 실버' 카테고리의 다른 글
[백준 20044번] Project Teams (C++) (0) | 2024.06.30 |
---|---|
[백준 15970번] 화살 그리기 (C++) (0) | 2024.06.28 |
[백준 11256번] 사탕 (C++) (0) | 2024.05.07 |
[백준 1337번] 올바른 배열 (C++) (0) | 2024.05.06 |
[백준 1246번] 온라인 판매 (C++) (0) | 2024.05.05 |