반응형
https://www.acmicpc.net/problem/2750
1차 시도- 맞았습니다
#include <iostream>
#include <algorithm>
using namespace std;
int compare(const void* a,const void *b)
{
int num1 = *(int *)a;
int num2 = *(int *)b;
if(num1<num2)
return -1;
if(num1>num2)
return 1;
return 0;
}
int main()
{
int n;
cin >> n;
int num[n];
for (int i = 0;i<n;i++)
cin >> num[i];
qsort(num, n, sizeof(int), compare);
for (int i = 0; i < n;i++)
cout << num[i] << '\n';
}
qsort 함수를 쓰고 싶었는데, qsort함수에 들어갈 인자와 compare함수를 어떻게 작성하는지 몰라서 헤멨다.
https://dojang.io/mod/page/view.php?id=638 여기를 보고 해결했다.
간단히 말하자면, qsort(정렬할 배열, 요소 개수, 요소 크기, 비교 함수)를 넣어야 하고
비교 함수의 형식(?)은 <notnull> compare(const void*, const void*)로 정해져 있기에 compare함수 안에서 void 포인터를 int 포인터로 변환하는 과정이 필요하다. 포인터도 형변환이 되는 줄은 몰랐음.
오름차순 정렬 조건으로, a < b 일 때는 -1을 반환, a > b 일 때는 1을 반환, a == b 일 때는 0을 반환하면 된다.
내림차순 정렬 조건을 쓰고 싶으면 a < b일때 1을 반환하면 된다.
반응형
'잡다한 시도 > 코테 준비는 하는거니?' 카테고리의 다른 글
[프로그래머스] [python] 전화번호 목록 (0) | 2021.05.05 |
---|---|
[C++] Priority Queue의 custom sort (6) | 2021.03.19 |
[BOJ] 1008번: A/B (0) | 2019.10.12 |
[BOJ] 2875번: 대회 or 인턴 (0) | 2019.03.30 |
[BOJ] 11721번: 열 개씩 끊어 출력하기 (0) | 2018.11.19 |