10814: 나이순 정렬

2022. 5. 9. 00:42C언어/백준

-Class2 : Silver5

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

 

10814번: 나이순 정렬

온라인 저지에 가입한 사람들의 나이와 이름이 가입한 순서대로 주어진다. 이때, 회원들을 나이가 증가하는 순으로, 나이가 같으면 먼저 가입한 사람이 앞에 오는 순서로 정렬하는 프로그램을

www.acmicpc.net

 

-결과

 

-코드

#include <stdio.h>
#include <stdlib.h>

typedef struct
{
	int age;
	int idx;
	char name[101];
}member;

int compare(const void* first, const void* second)
{
	member* a = (member*)first;
	member* b = (member*)second;

	if (a->age < b->age)
		return -1;
	else if (a->age > b->age)
		return 1;
	else
	{
		if (a->idx < b->idx)
			return -1;
		else
			return 1;
	}
	return 0;
}

int main()
{
	int i, n;
	member* list;

	scanf("%d", &n);
	list = (member*)malloc(n * sizeof(member));

	for (i = 0; i < n; i++)
	{
		scanf(" %d %s", &list[i].age, list[i].name);
		list[i].idx = i;
	}

	qsort(list, n, sizeof(list[0]), compare);

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

	return 0;
}

 

-풀이

이 문제는 구조체를 이용하여 나이, 인덱스 번호, 이름을 묶어서 입력핟고 qsort를 이용해 정렬해야 한다.

이름 길이가 100보다 작거나 같은 문자열이기 때문에 name[101]로 짜야 한다.

리스트로 나이와 이름을 입력받고,  출력한다.

'C언어 > 백준' 카테고리의 다른 글

11650: 좌표 정렬하기  (0) 2022.05.21
10989: 수 정렬하기 3  (0) 2022.05.09
7568: 덩치  (0) 2022.05.09
17478: 재귀함수가 뭔가요?  (0) 2022.05.05
2751: 수 정렬하기2  (0) 2022.05.05