Software Hyena::

[백준 11557번] - Yangjojang of The Year / C++ 본문

알고리즘/백준

[백준 11557번] - Yangjojang of The Year / C++

bluehyena 2021. 2. 20. 18:11
반응형

www.acmicpc.net/problem/11557

 

11557번: Yangjojang of The Year

입학 OT때 누구보다도 남다르게 놀았던 당신은 자연스럽게 1학년 과대를 역임하게 되었다. 타교와의 조인트 엠티를 기획하려는 당신은 근처에 있는 학교 중 어느 학교가 술을 가장 많이 먹는지

www.acmicpc.net

문제

입학 OT때 누구보다도 남다르게 놀았던 당신은 자연스럽게 1학년 과대를 역임하게 되었다.

타교와의 조인트 엠티를 기획하려는 당신은 근처에 있는 학교 중 어느 학교가 술을 가장 많이 먹는지 궁금해졌다.

학교별로 한 해동안 술 소비량이 주어질 때, 가장 술 소비가 많은 학교 이름을 출력하여라.

입력

입력의 첫 줄에는 테스트 케이스의 숫자 T가 주어진다.

매 입력의 첫 줄에는 학교의 숫자 정수 N(1 ≤ N ≤ 100)이 주어진다.

이어서 N줄에 걸쳐 학교 이름 S(1 ≤ |S| ≤ 20, S는 공백없는 대소문자 알파벳 문자열)와 해당 학교가 지난 한 해동안 소비한 술의 양 L(0 <= L <= 10,000,000)이 공백으로 구분되어 정수로 주어진다.

같은 테스트 케이스 안에서 소비한 술의 양이 같은 학교는 없다고 가정한다.

출력

각 테스트 케이스마다 한 줄에 걸쳐 술 소비가 가장 많은 학교의 이름을 출력한다.

--------------------------------------------------------------------------------------------------------------

풀이

<C++>

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

using namespace std;

bool sortFunction(pair<string, int> a, pair<string, int> b) {
	return a.second > b.second;
}

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

	int T;
	cin >> T;

	for (int i = 0; i < T; ++i) {
		int N;
		cin >> N;

		vector<pair<string, int>> rank;
		string name;
		int num;

		for (int j = 0; j < N; ++j) {
			cin >> name >> num;
			rank.push_back({ name, num });
		}

		sort(rank.begin(), rank.end(), sortFunction);
		cout << rank[0].first << '\n';
	}

	return 0;
}

페어로 이루어진 벡터를 정렬한 후 가장 앞의 인덱스의 학교이름을 출력하면 풀리는 문제이다.

1. T를 입력받는다

2. N을 입력받는다.

3. name과 num을 각각 입력받은 후 pair의 형태로 vector에 저장한다.

4. 내림차순으로 정렬한다.

5. rank[0]을 출력한다.

반응형
Comments