문제 풀이
구조체를 통해 이름과 과목 점수를 입력 받고, 점수가 같은 경우 사전 순으로 증가하는 순서로 정렬한다.
이 때 qsort
와 strcmp
를 이용하였다.
소스코드
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct {
int language;
int enligsh;
int math;
char name[20];
} info;
int compare(const void* a, const void* b)
{
info A = *(info*)a;
info B = *(info*)b;
if (A.language < B.language)
{
return 1;
}
else if (A.language > B.language)
{
return -1;
}
else
{
if (A.enligsh < B.enligsh)
{
return -1;
}
else if (A.enligsh > B.enligsh)
{
return 1;
}
else
{
if (A.math < B.math)
{
return 1;
}
else if (A.math > B.math)
{
return -1;
}
else
{
return -strcmp(B.name, A.name);
}
}
}
return 0;
}
int main()
{
info p[1000];
int n;
scanf("%d", &n);
int i = 0;
while (i<n)
{
scanf("%s %d %d %d", p[i].name, &p[i].language, &p[i].enligsh, &p[i].math);
i++;
}
i = 0;
qsort(p,n,sizeof(info),compare);
while (i<n)
{
printf("%s\n", p[i].name);
i++;
}
return 0;
}
'C C++ > C C++ 백준' 카테고리의 다른 글
C언어 백준 11004번 K번째 수 (0) | 2022.07.10 |
---|---|
C언어 백준 10989번 수 정렬하기 3 (0) | 2022.07.02 |
C언어 백준 11814번 나이순 정렬 (0) | 2022.06.26 |
C언어 백준 11651번 좌표 정렬하기 2 (0) | 2022.06.26 |
C언어 백준 11650번 좌표 정렬하기 (0) | 2022.06.26 |
댓글