https://www.acmicpc.net/problem/10814
같은 나이에 대해 안정정렬을 하는 문제...인거 같은데 어째서인지 그냥 정렬로 해도 풀리는 느낌이다. 비교함수가 어찌저찌 잘 맞아 떨어졌나보다.
// 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 |