[정렬] 10814. 나이순 정렬

알고리즘/백준 알고리즘

2020. 2. 18. 17:14

1. 문제 해결 전략

기존의 정렬방식의 클래스에 변수 하나만 더 추가하면 되는 간단한 문제이다.

 

#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
class person
{
public:
	string name;
	int age;
	int i;

	person(string name, int age, int i)
	{
		this->name = name;
		this->age = age;
		this->i = i;
	}
};

vector<person> v;

bool compare(const person& p1, const person& p2)
{
	if (p1.age == p2.age)
	{
		return p1.i < p2.i;
	}
	else
	{
		return p1.age < p2.age;
	}
}

int main(void)
{
	int n;
	scanf("%d", &n);
	for (int i = 0; i < n; i++)
	{
		int ag;
		string nm;
		cin >> ag >> nm;
		v.push_back(person(nm, ag, i));
	}

	sort(v.begin(), v.end(), compare);

	for (int i = 0; i < n; i++)
	{
		printf("%d %s\n", v[i].age, v[i].name.c_str());
	}

	return 0;
}

가입순으로 정렬하는 방식이 들어가있기 때문에, vector에 pushback할 때 번호를 함께 입력해 줄

멤버 변수를 만들고 생성자를 초기화 해 준다.

 

2. 걸린 시간

10초?

 

3. 느낀점

느낄게 없는 문제

 

4. 링크

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

 

'알고리즘 > 백준 알고리즘' 카테고리의 다른 글

[정렬] 11652. 카드  (0) 2020.04.21
[정렬] 10825. 국영수  (0) 2020.02.18
[정렬] 11650. 좌표 정렬  (0) 2020.02.18
[정렬] 2571. 수 정렬하기 2  (0) 2020.02.18
[dp] 1149. RGB 거리  (0) 2020.02.14