본문 바로가기
프로그래밍/알고리즘

백준 11098 첼시를 도와줘

by 개발하는군인 2021. 11. 20.

문제 :  백준 11098 첼시를 도와줘 

https://www.acmicpc.net/problem/11098

 

 

해설 :

이문제의 포인트는  쌍의로된 데이터를 입력받아 그중 가장 큰값을 가진 데이터를 찾는것이다.

 

1.  선수인원(P) 만큼 반복하면서 값을 입력받고 이전 MAX몸값과 비교하면서  MAX값보다 큰경우

    MAX 값을 업데이트하면서 가장비싼 선수를 찾는다.

 

장점 : 코드가 간략하고 빠르게 짤수있다.

단점 : 2번째로 비싼선수를 찾는다거나 가장 저렴한 선수를 찾을수 없다. (확장성제로)

 

2. 선수인원(P)만큼 정보를 입력받아 pair형태로 저장하고 그 데이터를 vector에 추가한다.

   그 후 sort 함수를 사용하여 정렬한다.

 

장점 : 2번째로 비싼선수나 가장 저렴한선수를 찾을수 있다.

단점 : 1번에 비해 상대적으로 복잡하다.

 

 

답안: 

답안은 2번방안으로 푼것이다.

 

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


int main(void)
{
vector<pair<int, string>> player_vactor;
int n, p, temp_value;
string temp_string;
cin >> n;
for (int j = 0; j < n; j++)
{
cin >> p;
//  선수입력 
for (int i = 0; i < p; i++){
cin >> temp_value >> temp_string;
player_vactor.push_back(pair<int, string>(temp_value, temp_string));
}


/*

sort시 greater<>() 를 사용하면 내림차순으로 정렬된다. 

greater<>()사용하지않을 경우 compare함수를 사용하여 구현

*/

 

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

 

// 결과 출력 
cout << player_vactor[0].second << endl;
player_vactor.clear();
}
}