https://www.acmicpc.net/problem/10814
10814번: 나이순 정렬
온라인 저지에 가입한 사람들의 나이와 이름이 가입한 순서대로 주어진다. 이때, 회원들을 나이가 증가하는 순으로, 나이가 같으면 먼저 가입한 사람이 앞에 오는 순서로 정렬하는 프로그램을
www.acmicpc.net
같은 나이에 대해 안정정렬을 하는 문제...인거 같은데 어째서인지 그냥 정렬로 해도 풀리는 느낌이다. 비교함수가 어찌저찌 잘 맞아 떨어졌나보다.
// C solution
// 왜 되는거지?
#include <stdio.h>
#include <stdlib.h>
typedef struct {
int age;
char name[101];
}User;
int compare(const void * a, const void * b) {
User * u1 = (User *)a;
User * u2 = (User *)b;
return u1->age > u2->age;
}
int main () {
int n;
scanf("%d", &n);
User * arr = (User *)malloc(sizeof(User) * n);
for (int i = 0; i < n; i++)
scanf(" %d %s", &arr[i].age, arr[i].name);
qsort(arr, n, sizeof(User), compare);
for (int i = 0; i < n; i++)
printf("%d %s\n", arr[i].age, arr[i].name);
}
// C++ solution
#include <iostream>
#include <string>
#include <vector>
#include <utility>
#include <algorithm>
using namespace std;
bool compare (pair<int, string> user1, pair<int, string> user2) {
return user1.first < user2.first;
}
int main () {
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
int n;
int age;
string name;
vector<pair<int, string>> user;
vector<pair<int, string>>::iterator iter;
cin >> n;
for (int i = 0; i < n; i++) {
cin >> age >> name;
user.push_back(make_pair(age, name));
}
stable_sort(user.begin(), user.end(), compare);
for (iter = user.begin(); iter != user.end(); iter++)
cout << iter->first << ' ' << iter->second << '\n';
}
'coding_test > BAEKJOON' 카테고리의 다른 글
백준 2108번 C++ 풀이 (0) | 2021.11.29 |
---|---|
백준 11651번 C / C++ 풀이 (0) | 2021.11.29 |
백준 11650번 C, C++ 풀이 (0) | 2021.11.25 |
백준 2164번 C++ 풀이 (0) | 2021.11.25 |
백준 1181번 C, C++ 풀이 (0) | 2021.11.25 |