[구름]숫자 제거 정렬

YongJun·2024년 12월 10일

[코딩테스트]

목록 보기
5/22

문제

정수 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;
}
profile
Student

0개의 댓글