본문 바로가기

BAEKJOON/수학

백준 11004번 [K번째 수](C++) -yes6686- 티스토리

728x90
SMALL

백준 문제 풀이: 11004


문제 링크: https://www.acmicpc.net/problem/11004

문제 설명:
주어진 정수 배열에서 k번째로 작은 수를 찾는 문제입니다. 자세한 내용은 위 링크를 참고하세요.


문제 해결 코드


#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;

int main() {
    ios::sync_with_stdio(false);
    cin.tie(NULL);

    // 입력 크기와 찾을 k번째 수 입력
    int n, k;
    cin >> n >> k;

    // 벡터를 사용하여 입력받기
    vector arr(n);
    for (int i = 0; i < n; i++) {
        cin >> arr[i];
    }

    // 정렬 수행
    sort(arr.begin(), arr.end());

    // k번째 작은 수 출력 (0-indexed이므로 k-1)
    cout << arr[k - 1] << '\n';

    return 0;
}

코드 설명

위 코드는 정수 배열에서 k번째 작은 값을 찾는 알고리즘을 구현한 코드입니다. 주요 로직은 다음과 같습니다:

  1. 정수 배열의 크기 n과 찾고자 하는 k번째 수의 순서 k를 입력받습니다.
  2. 배열을 입력받고 STL의 sort 함수를 사용하여 정렬합니다.
  3. 정렬된 배열에서 k-1번째 값을 출력합니다.

결과

이 코드는 정렬을 활용하여 문제를 해결하며, 시간복잡도는 O(n log n)입니다. 입력 크기가 크더라도 효율적으로 수행됩니다.

다른 접근 방식이나 개선 사항이 있다면 댓글로 공유 부탁드립니다!

728x90
LIST