본문 바로가기

[Baekjoon] C++/Bronze

[baekjoon] 11557 : Yangjojang of The Year (C++)

문제


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

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

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

 

입력


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

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

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

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

 

출력


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

 

예제 입출력


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

 

11557번: Yangjojang of The Year

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

www.acmicpc.net

 

문제 풀이


T를 입력받은뒤 T만큼 for문을 돌려 N을 입력받는다. 또 N을 입력받은만큼 학교 이름 S와 소비한 술의 양 L을 입력받아 vector에 넣어준다. 그뒤 소비한 술의 양이 가장 많은 학교의 이름을 출력하는 것이므로 max_element를 사용해 L중 가장 큰 수의 인덱스 를 S로 출력하면 되는 간단한 문제였다.

 

최종 코드


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

int main() {
	int T, N;
	cin >> T;
	for (int i = 0; i < T; i++) {
		cin >> N;
		vector<string> S;
		vector<int> L;
		for (int j = 0; j < N; j++) {
			string s; int l;
			cin >> s >> l;
			S.push_back(s);
			L.push_back(l);
		}
		int max = max_element(L.begin(), L.end()) - L.begin();
		cout << S[max]<<"\n";
	}
}

'[Baekjoon] C++ > Bronze' 카테고리의 다른 글

[baekjoon] 5585 : 거스름돈 (C++)  (0) 2024.03.11
[baekjoon] 15059 : Hard choice (C++)  (2) 2024.02.27
[baekjoon] 2798 : 블랙잭 (C++)  (1) 2023.08.28