하루하루 꾸준히, 인생은 되는대로

알고리즘

백준 11292 키 큰 사람 C++

긤효중 2022. 7. 22. 16:16

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

 

11292번: 키 큰 사람

민우는 학창시절 승부욕이 강해서 달리기를 할 때에도 누가 가장 빠른지를 중요하게 생각하고, 시험을 볼 때에도 누가 가장 성적이 높은지를 중요하게 생각한다. 이번에 반에서 키를 측정하였

www.acmicpc.net


문제

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


입력

입력은 여러개의 테스트케이스로 구성되어있다. 각 테스트케이스는 첫 번째 줄에 학생의 수 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