문제
정수 N개가 주어집니다. 무작위로 주어지는 정수들을 정렬하기로 합니다. 단, 중복되는 정수를 제거하여 오름차순으로 정렬하고자 합니다.
즉, 1,1,3,2라는 4개의 정수가 주어지면, 1,2,3으로 정렬해야합니다.
주어지는 정수를 정렬하려 오름차순으로 출력하시오
입력:
7
1 1 3 3 3 2 2
출력:
1 2 3
입력:
10
7 3 6 8 4 10 2 8 8 2
출력:
2 3 4 6 7 8 10
#include <stdio.h>
#include <stdlib.h> //qsort 함수 사용을 위해서 선언
//const int *a const int *b로 하면 실행은 가능하지만 암시적으로 변환해주는거라서 void 권장
int compare(const void *a, const void *b) {
return (*(int *)a - *(int *)b);
}
int main() {
int n;
scanf("%d", &n);
int arr[n];
for (int i = 0; i < n; i++) {
scanf("%d", &arr[i]);
}
// 배열을 오름차순으로 정렬
qsort(arr, n, sizeof(int), compare);
// 결과 출력: 중복을 제외하고 정렬된 배열을 공백을 두고 출력
for (int i = 0; i < n; i++) {
// 첫 번째 숫자이거나, 이전 숫자와 다를 때만 출력
if (i == 0 || arr[i] != arr[i - 1]) {
printf("%d", arr[i]);
if (i < n - 1) printf(" ");
}
}
printf("\n");
return 0;
}