와 좌표 정렬~~ 쉽져~~
그냥 정렬하면 되겠네요 무지성 정렬~~~~~~~~~~~~~~~~~~
#include <stdio.h>
int solve() {
int N, temp;
scanf("%d", &N);
int axis[N][2];
for(int i=0;i<N;i++)
scanf("%d %d", &axis[i][0], &axis[i][1]);
for(int i=0;i<N-1;i++) {
for(int j=i+1;j<N;j++) {
if(axis[i][0] > axis[j][0]) {
temp = axis[i][0];
axis[i][0] = axis[j][0];
axis[j][0] = temp;
temp = axis[i][1];
axis[i][1] = axis[j][1];
axis[j][1] = temp;
}
else if(axis[i][0] == axis[j][0]) {
if(axis[i][1] > axis[j][1]) {
temp = axis[i][1];
axis[i][1] = axis[j][1];
axis[j][1] = temp;
}
}
}
}
for(int i=0;i<N;i++)
printf("%d %d\n", axis[i][0], axis[i][1]);
}
int main() {
solve();
return 0;
}
하면 당연히 시간 오버. 다른 방법으로 문제를 접근해야한다.
#include <stdio.h>
#include <stdlib.h>
typedef struct arr {
int x;
int y;
} axis;
int compare(const void *a, const void *b) {
axis p1 = *(axis *)a;
axis p2 = *(axis *)b;
if(p1.x > p2.x)
return 1;
else if(p1.x < p2.x)
return -1;
else {
if(p1.y > p2.y)
return 1;
else if(p1.y < p2.y)
return -1;
else
return 0;
}
}
int solve() {
int N;
scanf("%d", &N);
axis res[N];
for(int i=0;i<N;i++)
scanf("%d %d", &res[i].x, &res[i].y);
qsort(res, N, sizeof(axis), compare);
for(int i=0;i<N;i++)
printf("%d %d\n", res[i].x, res[i].y);
}
int main() {
solve();
return 0;
}
이번에도 qsort를 사용하였다, 구조체를 사용하여 x와 y를 담아주었고 compare 함수에 분기를 주어 정렬했다.
머리를 참 싸매면서 풀었는데, 여전히 갈길이 멀어보인다.
'백준 (C99) > 정렬 (完)' 카테고리의 다른 글
백준 1181 : 단어 정렬 (0) | 2022.02.06 |
---|---|
백준 11651 : 좌표 정렬하기 2 (0) | 2022.02.06 |
백준 1427 : 소트인사이드 (0) | 2022.02.05 |
백준 2108 : 통계학 (0) | 2022.02.05 |
백준 10989 : 수 정렬하기 3 (0) | 2022.02.05 |
Comment