[C++] 백준 11004 K번째 수
반응형
1. 서론
백준에는 K번째 수라는 문제가 굉장히 많으니 주의해야 한다.... 나도 모르고 골드 3짜리 문제 풀다가 짜증 나 죽을 뻔
2. 문제 풀이
배열의 크기 n과 k값이 주어진다. 그리고 그다음 배열의 값이 주어지는데 그 배열을 오름차순으로 정렬했을 때 k번째 수를 출력하는 문제다.
문제 자체는 되게 단순하다. 입력값들을 쭉 받고 정렬한 후 k번째 수를 출력하면 된다. 근데 그냥 iostream을 쓰면 시간 초과가 난다.
그래서 cstdio 라이브러리에 있는 scanf를 썼다. 그리고 난 처음에 쫄아서 배열 값을 최대로 해서 그냥 배열로 정의했었는데 의외로 백터로 풀어도 잘 돌아간다. scanf만 쓴다면....
3. 코드 설명
#include <cstdio>
#include <algorithm>
using namespace std;
int a[5000000];
int main()
{
int n, k, i;
scanf("%d %d", &n, &k);
for (i = 0; i < n; i++)
scanf("%d", &a[i]);
sort(a, a + n);
printf("%d\n", a[k - 1]);
}
이걸 풀다 재밌는 걸 발견했다. 보면 배열의 크기가 엄청 큰데 이것 때문에 시간 초과가 나는지 찾아보다가
이런 글을 발견했다. 그래서 전역 변수로 배열을 선언했는데 사실 그냥 cin의 문제로 main함수 안에 넣어도 잘 돌아간다 ㅎ
반응형
'Algorithm' 카테고리의 다른 글
[C++] 백준 1302 베스트셀러 (0) | 2021.03.27 |
---|---|
[C++] 백준 1543 문서 검색 (0) | 2021.03.26 |
[C++] 백준 2003 수들의 합 2 (0) | 2021.03.10 |
[C++] 백준 10989 수 정렬하기 3 (0) | 2021.03.01 |
[C++] 백준 11650 좌표 정렬하기 (0) | 2021.02.27 |