[백준/C++]#11004 - K번째 수

2021. 2. 1. 12:47필요/코딩테스트(백준)

풀이

#include <iostream>
#include <algorithm>

using namespace std;

int main() {
	ios::sync_with_stdio(false);	// cin, cout의 속도 증가
	int n,k;
	cin >> n >> k;
	int a[50000000];
	for (int i=0; i<n; i++) {		// 입력
		cin >> a[i];
	}
	k--;
	nth_element(a, a+k, a+n);		//정렬
	cout << a[k];
	return 0;
}

개념

nth_element(first, nth, last)는 CTL 중 하나로, 부분정렬을 해주는 함수이다.

first와 last까지의 요소 중 nth까지만 정렬한다.


풀이 

 

sort 함수를 다르게 사용하는 것 외에는 여타 정렬문제와 같다.

신경 써야할 부분은, 배열의 index는 0부터 시작하나 k의 index는 1부터 시작한다.

따라서 k--;를 통해 참조할 요소를 맞춘다. 


+a

사실 nth_element 연산을 하지않고 sort로 접근해도 해결되는 문제이다.

다만 속도측면에서 nth_element가 더 빠르다.

문제를 해결함에 있어 더욱 중요한 것은, ios::sync_with_stdio(false) 의 사용이다.

일반적인 cin, cout의 속도로는 시간초과가 발생한다.

'필요 > 코딩테스트(백준)' 카테고리의 다른 글

[백준/C++]#1260 - DFS와 BFS  (0) 2021.02.02
[백준/C++]#1377 - 버블 소트  (0) 2021.02.01
[백준/C++]#11652 - 카드  (0) 2021.01.31
[백준/C++]#10989 - 수 정렬하기 3  (0) 2021.01.31
[백준/C++]#10825 - 국영수  (0) 2021.01.29