본문 바로가기

백준/C++

[Baekjoon/C++] 11292번 - 키 큰 사람

[백준] Baekjoon Online Judge

문제로 이동

 

문제

민우는 학창시절 승부욕이 강해서 달리기를 할 때에도 누가 가장 빠른지를 중요하게 생각하고, 시험을 볼 때에도 누가 가장 성적이 높은지를 중요하게 생각한다. 이번에 반에서 키를 측정하였는데, 민우는 마찬가지로 누구의 키가 가장 큰지 궁금해한다. 민우를 도와 가장 키가 큰 사람을 찾아보자.

 

입력

입력은 여러개의 테스트케이스로 구성되어있다. 각 테스트케이스는 첫 번째 줄에 학생의 수 N (0 < N ≤ 50)이 주어지고, 이어서 N개의 줄에 각 학생의 이름과 키가 공백으로 구별되어 주어진다. 학생의 이름은 알파벳 대/소문자로만 이루어져 있고, 길이는 10을 넘지 않는다. 학생의 키는 소숫점 이하 2자리까지 주어진다. N이 0으로 주어지는 경우 프로그램을 종료한다.

 

출력

각 테스트케이스에 대해, 가장 키가 큰 학생의 이름을 한 줄에 출력한다. 같은 키의 사람이 여러명 일 경우 모두 출력해야 하며, 순서는 입력으로 들어온 순서를 유지해야 한다.

 


풀이

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

struct Student {
	string name;
	double h;
};

Student arr[51];

bool compare(Student a, Student b);
void print(int N, double d);

bool compare(Student a, Student b) {
	return a.h > b.h;
}

void print(int N, double d) {
	for (int i = 0; i < N; i++) {
		if (arr[i].h != d) break;

		cout << arr[i].name << ' ';
	}
	cout << '\n';
}

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

	while (true) {
		int N;
		cin >> N;

		if (N == 0) break;

		for (int i = 0; i < N; i++) 
			cin >> arr[i].name >> arr[i].h;

		sort(arr, arr + N, compare);

		print(N, arr[0].h);
	}

	return 0;
}

 내림차순으로 학생을 정렬하고, 가장 앞에 있는 학생의 키와 같은 신장을 가지고 있는 학생의 이름을 출력하면 된다.

'백준 > C++' 카테고리의 다른 글

[Baekjoon/C++] 1744번 - 수 묶기  (0) 2025.10.30
[Baekjoon/C++] 2573번 - 빙산  (0) 2025.10.17
[Baekjoon/C++] 1439번 - 뒤집기  (0) 2025.10.14
[Baekjoon/C++] 3054번 - 피터팬 프레임  (0) 2025.10.12
[Baekjoon/C++] 2358번 - 평행선  (0) 2025.10.11