#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int compare(void const *x, void const *y){
int **a = (int **)x;
int **b = (int **)y;
return **a - **b;
}
int main()
{
int a;
scanf("%d", &a);
int *arr1 = (int *)malloc(sizeof(int) * a);
int **arr11 = (int **)malloc(sizeof(int) * a);
for(int i = 0; i < a; i++){
scanf("%d", &arr1[i]);
arr11[i] = &arr1[i];
}
qsort(arr11, a, sizeof(arr11[0]), compare);
int idx = 0;
int seq = 0;
while(1){
if(idx == a - 1){
*arr11[idx] = seq;
break;
}
else if(*arr11[idx] == *arr11[idx + 1]){
*arr11[idx] = seq;
idx++;
}
else{
*arr11[idx] = seq;
seq++;
idx++;
}
}
for(int i = 0; i < a; i++){
printf("%d ", arr1[i]);
}
}
위의 좌표압축 문제를 풀려고 위의 코드를 작성했는데요.. vscode gcc로 돌렸을 때에는 배열크기를 1000000으로 잡고 돌리니까 터지길래 꾸역꾸역 malloc으로 받아서 풀고 있었는데, 혹시나해서 제출란에 배열크기 1000000으로 제출하니까 바로 성공뜨네요.. 제가 궁금한 거는 위 코드처럼 malloc으로 제출했을 때에는 런타임오류가 계속 뜨던데, 왜 그런지 혹시 가르쳐주실 코딩 goat 계신가요..?