백준 14469 c++

magicdrill·2024년 6월 7일

백준 문제풀이

목록 보기
364/673

백준 14469 c++

쓸데없는 생각을 너무 많이 했다. 단순 SJF 알고리즘인데 매 회차마다 순서를 정렬하려는 생각을 했다. 단순하게 시도해보겠다.

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

void input_cows(vector<pair<int, int>>& cows)
{
	int i, N;
	int arrive_time, test_time;

	cin >> N;
	for (i = 0; i < N; i++)
	{
		cin >> arrive_time >> test_time;
		cows.push_back({ arrive_time, test_time });
	}

	return;
}

bool compare(pair<int, int> A, pair<int, int> B) 
{
	if (A.first == B.first)//도착시간이 같다면?
	{
		return A.second < B.second;//검사시간이 짧은 소 우선
	}
	else
	{
		return A.first < B.first;
	}
}

void find_answer(vector<pair<int, int>>& cows)
{
	int answer = 0;
	int i;

	sort(cows.begin(), cows.end(), compare);
	answer = cows.front().first + cows.front().second;
	for (i = 1; i < cows.size(); i++)//가장 앞에 소 계산했으니 제외
	{
		if (answer < cows[i].first)//대기중인 소가 없음
		{
			answer = cows[i].first + cows[i].second;
		}
		else//대기중인 소가 있음
		{
			answer = answer + cows[i].second;
		}
	}
	cout << answer << "\n";

	return;
}

int main(void)
{
	ios_base::sync_with_stdio(false);
	cin.tie(NULL);
	cout.tie(NULL);

	vector<pair<int, int>> cows;

	input_cows(cows);
	find_answer(cows);

	return 0;
}

0개의 댓글