홍시홍의 프로그래밍

[백준 11004] k번째 수 본문

알고리즘 문제풀이/백준

[백준 11004] k번째 수

홍시홍 2020. 1. 9. 21:51

https://www.acmicpc.net/problem/11004

 

11004번: K번째 수

수 N개 A1, A2, ..., AN이 주어진다. A를 오름차순 정렬했을 때, 앞에서부터 K번째 있는 수를 구하는 프로그램을 작성하시오.

www.acmicpc.net

요구사항

1. k 번째 있는 수 찾기

 

풀이

1. 오름차순 정렬 후 k번째 수 출력

#include <stdio.h>
#include <algorithm>
#include <list>
#include <iostream>

using namespace std;
 
struct NODE {
    int prev;
    int next;
    int val;
};

typedef long long ll;

ll buf[5000001];
void merge_sort(ll arr[],int len){
    if(len<2){
        return;
    }

    int i,j,k,mid;
    mid =len/2;
    i=0;
    j=mid;
    k=0;
    merge_sort(arr,mid);
    merge_sort((arr+mid),(len-mid));

    while(i<mid && j<len){
        if(arr[i] <arr[j]){
            buf[k++]=arr[i++];
        }
        else{
            buf[k++]=arr[j++];
        }
    }

    while(i<mid){
        buf[k++]=arr[i++];
    }

    while(j<len){
        buf[k++]=arr[j++];
    }

    for(int a =0 ; a<len;a++){
        arr[a]=buf[a];
    }
}

ll map[5000001];
int n,m;

int main(){
    cin>>n>>m;
    for(int i=0 ; i < n ; i++){
        scanf("%lld",&map[i]);
    }
    merge_sort(map,n);
    cout<<map[m-1]<<endl;
}

 

'알고리즘 문제풀이 > 백준' 카테고리의 다른 글

[백준 10825] 국영수  (0) 2020.01.09
[백준 1937] 욕심쟁이 판다  (0) 2020.01.09
[백준 11651]좌표 정렬하기2  (0) 2020.01.09
[백준 11650] 좌표 정렬하기  (0) 2020.01.09
[백준 1181] 단어 정렬  (0) 2020.01.09
Comments