문제 : 백준 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();
}
}
'프로그래밍 > 알고리즘' 카테고리의 다른 글
이진수 값 구하기 (0) | 2022.07.09 |
---|---|
순열 N개의 문자열중 R개를 나열할 수 있는 경우를 모두 출력 (0) | 2022.07.04 |
백준 셀프넘버(4673) 문제 (0) | 2020.03.28 |
알고리즘 - 카드 뒤집기 (0) | 2020.03.09 |
알고리즘 - 대칭수 찾기 ! (0) | 2020.03.07 |