정렬 문제를 풀다보면, 단계적으로 학습하는 듯한 느낌을 계속 받는다. 물론 그래서 단계적 학습이겠지만
이 문제도 이전에 있던 구조체-퀵 정렬을 사용하여 풀어보았다.
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
typedef struct arr {
int num;
char name[101];
int age;
} member;
int compare(const void *a, const void *b) {
member m1 = *(member *)a;
member m2 = *(member *)b;
if(m1.age > m2.age)
return 1;
else if(m1.age < m2.age)
return -1;
else {
if(m1.num > m2.num)
return 1;
else if(m1.num < m2.num)
return -1;
else
return 0;
}
}
int solve() {
int N;
scanf("%d", &N);
member res[N];
for(int i=0;i<N;i++) {
scanf("%d %s", &res[i].age, &res[i].name);
res[i].num = i+1;
}
qsort(res, N, sizeof(res[0]), compare);
for(int i=0;i<N;i++) {
printf("%d %s\n", res[i].age, res[i].name);
}
}
int main() {
solve();
return 0;
}
'백준 (C99) > 정렬 (完)' 카테고리의 다른 글
백준 18870 : 좌표 압축 (0) | 2022.02.18 |
---|---|
백준 1181 : 단어 정렬 (0) | 2022.02.06 |
백준 11651 : 좌표 정렬하기 2 (0) | 2022.02.06 |
백준 11650 : 좌표 정렬하기 (0) | 2022.02.06 |
백준 1427 : 소트인사이드 (0) | 2022.02.05 |
Comment