[백준 11650] 좌표 정렬하기 C언어
2024. 1. 24. 12:58ㆍ코딩테스트/백준
문제
https://www.acmicpc.net/problem/11650
11650번: 좌표 정렬하기
첫째 줄에 점의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개의 줄에는 i번점의 위치 xi와 yi가 주어진다. (-100,000 ≤ xi, yi ≤ 100,000) 좌표는 항상 정수이고, 위치가 같은 두 점은 없다.
www.acmicpc.net
코드
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct {
int x;
int y;
}Member;
int compare(const void* a, const void* b)
{
int w = ((Member*)a)->x;
int wy = ((Member*)a)->y;
int z = ((Member*)b)->x;
int zy = ((Member*)b)->y;
if (w < z) // x값 비교
return -1;
else if (w == z) { // x값 같다면
if (wy < zy) // y값 비교
return -1;
else // y값 비교
return 1;
}
else // x값 비교
return 1;
}
//int compare(const void* a, const void* b) // 이것도 가능함
//{
// int diff = ((Member*)a)->x - ((Member*)b)->x;
// return (diff != 0) ? diff : ((Member*)a)->y - ((Member*)b)->y; // x값의 차이가 있으면 그 차이를 반환하고, x값의 차이가 없으면 y값의 차이를 반환하라..
//}
int main(void)
{
int n = 0;
scanf("%d", &n);
Member* m = (Member*)malloc(sizeof(Member) * n);
for (int i = 0; i < n; i++) {
scanf("%d", &m[i].x);
scanf("%d", &m[i].y);
}
qsort(m, n, sizeof(Member), compare);
for (int i = 0; i < n; i++) {
printf("%d %d\n", m[i].x, m[i].y);
}
free(m);
}
'코딩테스트 > 백준' 카테고리의 다른 글
[백준 2775] 부녀회장이 될테야! C언어 (1) | 2024.01.29 |
---|---|
[백준 11866] 요세푸스 문제 0 C언어 (1) | 2024.01.25 |
[백준 10866] 덱 C언어 (1) | 2024.01.23 |
[백준] 1018. 체스판 다시 칠하기 (0) | 2023.07.24 |
[19532] 수학은 비대면강의입니다 (0) | 2023.07.20 |