728x90
반응형
문제 풀기 전 생각 :
/*
뭐야 엄청 쉽네 라고 생각했다
정렬하고 2번째 숫자 출력하면 끝이다
접근법은 맞았다.
*/
#include <iostream>
#include <algorithm>
using namespace std;
bool compare(int x, int y) {
return x < y;
}
int main(){
int n,k;
cin >> n >> k;
int arr[n];
for(int i=0 ; i<n ; i++){
scanf("%d",&arr[i]);
}
sort(arr,arr+n,compare);
cout << arr[k-1] << "\n";
return 0;
}
풀 때 어려웠던 점 또는 느낀점 :
하지만 계속해서 시간 초과로 통과가 안 되었다.
도대체 뭘 어떻게 더 고쳐야 하지?
하면서 다른 사람들의 코드도 보고
했는데 다 똑같은데 내거만 안되는 거였다.
결국 이유를 알아냈다... scanf가 cin보다
많이 빠르다는 사실을...
이거 때문에 몇번을 틀린건지....
그래서 주위에 알아보니
선배들이 입력 받을땐 항상 scanf를 사용한다고 했다
나도 앞으로 스캔에프 사용해야 겠다!!
개선방안 :
#include <bits/stdc++.h>
using namespace std;
int n, k, ipt[5000010];
int main() {
cin.tie(NULL);
ios_base::sync_with_stdio(false);
cin >> n >> k;
for (int i = 0; i < n; i++) cin >> ipt[i];
nth_element(ipt, ipt + k - 1, ipt + n);
cout << ipt[k - 1];
}
n번째 원소를 찾아주는 함수도 있구나...
한번 공부해봐야겠다!
728x90
반응형
댓글