https://www.acmicpc.net/problem/10814
10814번: 나이순 정렬
온라인 저지에 가입한 사람들의 나이와 이름이 가입한 순서대로 주어진다. 이때, 회원들을 나이가 증가하는 순으로, 나이가 같으면 먼저 가입한 사람이 앞에 오는 순서로 정렬하는 프로그램을
www.acmicpc.net
이 문제는 배열의 요소를 주어진 조건에 맞게 정렬해야한다.
배열의 요소는 나이와 이름을 넣고, 이름이 같을 때 들어온 순서대로 정렬하기 위해 규칙이라는 변수도 생성하였다.
위에서 정의한 요소는 class로 정의하여 배열에 삽입하였다.
정렬을 위한 함수는 bigger라는 이름으로 정의하였고, 나이가 같으면 규칙에 따라 내림차순으로 정렬하고,
나이가 다르면 나이 순서대로 내림차순으로 정렬하였다.
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
class Person{
public:
int age;
string name;
int rule;
Person(int age, string name, int rule):age(age),name(name),rule(rule){}
};
bool bigger(Person a, Person b){
if(a.age == b.age) return a.rule < b.rule;
else return a.age < b.age;
}
int main(){
int N;
cin>>N;
vector<Person> arr;
for(int i = 0;i<N;i++){
int age;
string name;
cin>>age>>name;
arr.emplace_back(age,name,i);
}
sort(arr.begin(),arr.end(),bigger);
for(int i = 0;i<arr.size(); i++)
cout<<arr[i].age<<' '<<arr[i].name<<'\n';
}
'Baekjoon Review' 카테고리의 다른 글
[Silver 4] 10828번 스택 (0) | 2023.10.13 |
---|---|
[Silver 4] 10816번 숫자 카드 2 (0) | 2023.10.13 |
[Silver 4] 9012번 괄호 (0) | 2023.10.12 |
[Bronze 2] 2798번 블랙잭 (0) | 2023.10.12 |
[Silver 4] 2164번 카드2 (0) | 2023.10.11 |