-

[BOJ]11004 - 퀵소트/퀵셀렉션/머지소트 본문

Algorithm/Baekjoon

[BOJ]11004 - 퀵소트/퀵셀렉션/머지소트

Boogallee 2020. 3. 9. 21:53

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

 

11004번: K번째 수

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

www.acmicpc.net

 

C++에 sort를 사용하면 된다.

 

입력이 5,000,000이니 O(nlogn)이면 가능하다고 판단됨.

 

다만, cout / cin 대신 scanf와 printf 를 사용해야함.

 

입출력 속도가 차이가 많이 나기에 이것만 바꿔도 시간초과냐 통과냐가 갈림.

 

 

해당 문제는 Quick Sort 대신 Quick Selection Sort를 사용하면 O(n)에 해결할 수 있다고함

 

#include <iostream>
#include <vector>
#include <algorithm>
#include <stdio.h>
using namespace std;


//int arr[5000000];
vector<int> v;

int main() {

	int N, k;
	cin >> N >> k;

	for (int i = 0; i < N; i++) {
		int tmp;
		scanf("%d", &tmp);
		v.push_back(tmp);
	}

	sort(v.begin(), v.end());

	printf("%d", v[k - 1]);


	return 0;
}

'Algorithm > Baekjoon' 카테고리의 다른 글

[BOJ]10814-Sort  (0) 2020.03.12
[BOJ]10825  (0) 2020.03.10
[BOJ]2136_DFS  (0) 2019.07.10
1890 점프  (0) 2018.02.12
2667 단지번호붙이기  (0) 2018.02.12
Comments