https://www.acmicpc.net/problem/11292
문제
민우는 학창시절 승부욕이 강해서 달리기를 할 때에도 누가 가장 빠른지를 중요하게 생각하고, 시험을 볼 때에도 누가 가장 성적이 높은지를 중요하게 생각한다. 이번에 반에서 키를 측정하였는데, 민우는 마찬가지로 누구의 키가 가장 큰지 궁금해한다. 민우를 도와 가장 키가 큰 사람을 찾아보자.
입력
입력은 여러개의 테스트케이스로 구성되어있다. 각 테스트케이스는 첫 번째 줄에 학생의 수 N (0 < N ≤ 50)이 주어지고, 이어서 N개의 줄에 각 학생의 이름과 키가 공백으로 구별되어 주어진다. 학생의 이름은 알파벳 대/소문자로만 이루어져 있고, 길이는 10을 넘지 않는다. 학생의 키는 소숫점 이하 2자리까지 주어진다. N이 0으로 주어지는 경우 프로그램을 종료한다.
출력
각 테스트케이스에 대해, 가장 키가 큰 학생의 이름을 한 줄에 출력한다. 같은 키의 사람이 여러명 일 경우 모두 출력해야 하며, 순서는 입력으로 들어온 순서를 유지해야 한다.
테스트케이스 별로, 이름과 키가 주여지는데 가장 키가 큰 사람의 이름을 출력한다.
키가 같은 사람이 여러명이라면 입력 순으로 모두 출력한다.
입력을 받으면서 가장 키가 큰 사람의 키를 저장해두고, pair형태로 <이름,키>배열을 만들어서 배열에 넣어준다.
그 후 가장 키가 큰 사람의 키와 키가 같다면 출력해주었다.
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
int main(void){
while(1){
int t;
cin >> t;
if(t == 0){
break;
}
double max = -1; //가장 키가 큰 사람의 키
vector<double> v;
pair<string,double> arr[51];
//<이름,키>형태로 저장
for(int i = 0;i<t;i++){
cin >> arr[i].first >> arr[i].second;
if(arr[i].second > max){
//키가 가장 큰 사람의 키를 갱신
max = arr[i].second;
}
}
//키가 가장 큰 사람의 키와 키가 같다면 이름 출력
for(int i = 0;i<t;i++){
if(max == arr[i].second){
cout << arr[i].first << ' ';
}
}
cout << '\n';
}
}
'알고리즘' 카테고리의 다른 글
백준 5648 역원소 정렬 C++/STOI함수 (0) | 2022.07.24 |
---|---|
백준 12919 A와 B 2 (0) | 2022.07.24 |
백준 12933 오리 C++ (0) | 2022.07.22 |
백준 4659 비밀번호 발음하기 C++ (0) | 2022.07.21 |
백준 2303 숫자 게임 C++ (0) | 2022.07.21 |