백준 10814 : 나이순 정렬

정렬 문제를 풀다보면, 단계적으로 학습하는 듯한 느낌을 계속 받는다. 물론 그래서 단계적 학습이겠지만

 

이 문제도 이전에 있던 구조체-퀵 정렬을 사용하여 풀어보았다.

 

#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