11651: 좌표 정렬하기 2
2022. 5. 21. 00:55ㆍC언어/백준
-Class2 : Silver5
https://www.acmicpc.net/problem/11651
-결과
-코드
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
typedef struct {
int x;
int y;
}coord;
int compare(const void* first, const void* second)
{
coord* a = (coord*)first;
coord* b = (coord*)second;
if (a->y < b->y)
return -1;
else if (a->y > b->y)
return 1;
else
{
if (a->x < b->x)
return -1;
else
return 1;
}
return 0;
}
int main()
{
int i, n;
coord* list;
scanf("%d", &n);
list = (coord*)malloc(n * sizeof(coord));
for (i = 0; i < n; i++)
{
scanf(" %d %d", &list[i].x, &list[i].y);
}
qsort(list, n, sizeof(list[0]), compare);
for (i = 0; i < n; i++)
{
printf("%d %d\n", list[i].x, list[i].y);
}
return 0;
}
-풀이
좌표 정렬1 문제와는 반대로 먼저 y좌표가 증가하는 순으로 정렬하고, y좌표가 같으면 x좌표가 증가하는 순서로 정렬하는 문제이다. 마찬가지로 구조체를 사용하여 x와 y를 배열로 따로 선언한다.
main함수에서는 퀵 정렬을 사용해서 정렬된 배열을 출력하여 해결한다.
'C언어 > 백준' 카테고리의 다른 글
1978: 소수 찾기 (0) | 2022.05.24 |
---|---|
1920: 수 찾기 (0) | 2022.05.21 |
11650: 좌표 정렬하기 (0) | 2022.05.21 |
10989: 수 정렬하기 3 (0) | 2022.05.09 |
10814: 나이순 정렬 (0) | 2022.05.09 |