lst = [4,3,2,1,1,3,4,5]
def solution(lst):
unique_lst = list(set(lst))
unique_lst.sort(reverse=True)
return unique_lst
print(solution(lst))
#include <stdio.h>
int is_duplicate(int *temp, int k, int value)
// k = 검사할 요소의 갯수, value = 중복여부를 확인할 값
{
int j;
j = 0;
while (j < k)
{
if (temp[j] == value) // 동일한 값 발견, 탐색 종료
return (1);
j++;
}
return (0);
}
void remove_duplicate(int *arr, int *size)
{
int i = 0;
int k = 0;
int temp[*size]; // 중복이 제거된 값을 임시로 저장하는 배열
while (i < *size)
{
if (!is_duplicate(temp, k, arr[i]))
temp[k++] = arr[i];
i++;
}
i = 0;
while (i < k) # 출력
{
arr[i] = temp[i];
i++;
}
*size = k; // 중복이 제거된 배열의 요소 갯수
}
void sort_descending(int *arr, int size)
{
int i;
int swapped;
int temp;
swapped = 1;
while (swapped)
{
swapped = 0;
i = 0;
while (i < size - 1)
{
if (arr[i] < arr[i + 1])
{
temp = arr[i];
arr[i] = arr[i + 1];
arr[i + 1] = temp;
swapped = 1;
}
i++;
}
}
}
void print_array(int *arr, int size)
{
int i;
i = 0;
while (i < size)
{
printf("%d", arr[i]);
if (i < size - 1)
printf(" ");
i++;
}
printf("\n");
}
int main(void)
{
int arr[] = {4,3,2,1,1,3,4,5};
int size = sizeof(arr) / sizeof(arr[0]);
remove_duplicate(arr, &size);
sort_descending(arr, size);
print_array(arr, size);
return (0);
}
❓❓❓❓❓❓❓❓ 너무 차이나는 거 아니요?
#include <stdio.h>
#include <stdlib.h>``
int compare_desc(const void *a, const void *b)
{
return *(int *)b - *(int *)a;
}
void remove_duplicate_and_sort(int *arr, int *size)
{
qsort(arr, *size, sizeof(int), compare_desc); // 시간 복잡도 개선, 코드도 줄고
int j = 0;
int i = 1;
while (i < *size)
{
if (arr[j] != arr[i])
{
j++;
arr[j] = arr[i];
}
i++;
}
*size = j + 1;
}
void print_array(int *arr, int size)
{
int i;
i = 0;
while (i < size)
{
printf("%d", arr[i]);
if (i < size - 1)
printf(" ");
i++;
}
printf("\n");
}
int main(void)
{
int arr[] = {4,3,2,1,1,3,4,5};
int size = sizeof(arr) / sizeof(arr[0]);
remove_duplicate_and_sort(arr, &size);
print_array(arr, size);
return (0);
}