관리 메뉴

Kim's Programming

2063. 중간값 찾기 본문

SW ExpertAcademy/D1

2063. 중간값 찾기

Programmer. 2018. 11. 30. 22:10

2063. 중간값 찾기

문제출처: https://www.swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV5QPsXKA2UDFAUq&categoryId=AV5QPsXKA2UDFAUq&categoryType=CODE




풀이 방법

보통은 std::sort를 활용하여 정렬을 하지만 qsort를 활용하여 풀어보았다.



<코드>


#include <iostream>
#include <stdlib.h>

int compare(const void *a, const void *b)    // 오름차순 비교 함수 구현
{
    int num1 = *(int *)a;    // void 포인터를 int 포인터로 변환한 뒤 역참조하여 값을 가져옴
    int num2 = *(int *)b;    // void 포인터를 int 포인터로 변환한 뒤 역참조하여 값을 가져옴

    if (num1 < num2)    // a가 b보다 작을 때는
        return -1;      // -1 반환
    
    if (num1 > num2)    // a가 b보다 클 때는
        return 1;       // 1 반환
    
    return 0;    // a와 b가 같을 때는 0 반환
}

int main()
{
    int input {0};
    std::cin>>input;
    
    int* dataArray = new int[input];
    
    for(int i=0;i<input;i++)
        std::cin>>dataArray[i];
    
    qsort(dataArray, input, sizeof(int), compare);
    
    std::cout<<dataArray[input/2]<<"\n";
    
    for(int i=0;i<input;i++)
        std::cout<<dataArray[i]<< ' ';
    
    delete[] dataArray;
    
    return 0;
}


'SW ExpertAcademy > D1' 카테고리의 다른 글

2070. 큰 놈, 작은 놈, 같은 놈  (0) 2018.11.30
2068. 최대수 구하기  (0) 2018.11.30
2058. 자릿수 더하기  (0) 2018.11.30
2056. 연월일 달력  (0) 2018.11.30
2050. 알파벳을 숫자로 변환  (0) 2018.11.30