[백준] 10825 국영수 C++ (정렬)

·2022년 3월 14일
0

백준

목록 보기
16/23
post-thumbnail
post-custom-banner

📌 백준 10825 국영수
https://www.acmicpc.net/problem/10825



벡터의 자료형으로 구조체를 사용했다.
국어 점수를 내림차순으로 정렬,
국어 점수가 같으면 영어 점수를 오름차순으로 정렬,
영어 점수가 같으면 수학 점수를 내림차순으로 정렬하는 문제다.

sort()와 비교함수 compare()을 사용해서 문제를 풀었다.


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

struct student
{
    int kor;
    int eng;
    int math;
    string name;
};

//전체 비교
bool compare(const student& now, const student& last)
{
    if(now.kor != last.kor) return now.kor > last.kor;
    else 
    {
        if(now.eng != last.eng) return now.eng < last.eng;
        else 
        {
            if(now.math != last.math) return now.math > last.math;
                return now.name < last.name;
        }
    }
}

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

    int N;
    cin>>N;

    vector<student> students(N);

    //입력
    for(int i=0; i<N; i++)
        cin >> students[i].name >> students[i].kor >> students[i].eng >> students[i].math;

    //정렬
    sort(students.begin(), students.end(), compare);

    //출력
    //cout<<"answer==\n";
    for(int i=0; i<N; i++)
        cout << students[i].name<< "\n";
}
profile
https://k-ang.tistory.com/ 이전했어요
post-custom-banner

0개의 댓글