https://www.acmicpc.net/problem/11650
Idea
2차원 배열은 qsort
를 못 쓰는 줄 알고 혼자 버블정렬, 선택정렬 등 이것저것 다 해봤다.
수많은 실패의 흔적들 ㅋㅋ
2차원 배열 정렬 시간초과를 구글링 해 보다가 구조체를 써서 정렬을 하라네?? 이유는 몰?루
생각해낸게 compare를 손봐서 정렬해보면 되지 않을까? 했다. 그렇게해서 나온게
int compare(const void* a, const void* b) {
Coor num1 = *(Coor*)a;
Coor num2 = *(Coor*)b;
if (num1.x < num2.x) {
return -1;
}
else if (num1.x == num2.x) {
if (num1.y < num2.y) {
return -1;
}
else {
return 1;
}
}
return 1;
}
Code
#define _CRT_SECURE_NO_WARNINGS
#define LENGTH 100001
#include <stdio.h>
#include <string.h>
typedef struct _Coor {
int x;
int y;
}Coor;
int compare(const void* a, const void* b) {
Coor num1 = *(Coor*)a;
Coor num2 = *(Coor*)b;
if (num1.x < num2.x) {
return -1;
}
else if (num1.x == num2.x) {
if (num1.y < num2.y) {
return -1;
}
else {
return 1;
}
}
return 1;
}
int main(void) {
Coor arr[LENGTH] = { 0, };
int N;
scanf("%d", &N);
for (int i = 0; i < N; i++) {
scanf("%d %d", &arr[i].x, &arr[i].y);
}
qsort(arr, N, sizeof(Coor), compare);
for (int i = 0; i < N; i++) {
printf("%d %d\n", arr[i].x, arr[i].y);
}
return 0;
}