모든 챌린지
보통 0명 해결 정답률 0%

K번째로 작은 원소

전체 정렬 없이 k번째로 작은 값을 찾으세요.

리스트에서 k번째로 작은 값을 반환하세요 (k는 1부터 셉니다). Quickselect 알고리즘을 사용하면 전체를 정렬하지 않고 평균 O(n) 시간에 찾을 수 있습니다.

kth_smallest(numbers, k)를 구현하세요.

입력

numbers: 정수로 이루어진 리스트입니다. k: 반환할 작은 값의 순서(1부터 시작).

출력

k번째로 작은 값을 반환하세요.

제약 조건

1 ≤ k ≤ 길이 ≤ 200,000

예시

예시 1
입력:
k = 3
numbers = [7, 10, 4, 3, 20, 15]

예상 출력:
expected = 7
입력:
long long k = 3;
std::vector<long long> numbers = {7, 10, 4, 3, 20, 15};

예상 출력:
long long expected = 7;
입력:
long k = 3;
long[] numbers = new long[] {7, 10, 4, 3, 20, 15};

예상 출력:
long expected = 7;

설명

정렬 결과: 3, 4, 7, 10, 15, 20; 3번째로 작은 값은 7입니다.

예시 2
입력:
k = 2
numbers = [5, 5, 1]

예상 출력:
expected = 5
입력:
long long k = 2;
std::vector<long long> numbers = {5, 5, 1};

예상 출력:
long long expected = 5;
입력:
long k = 2;
long[] numbers = new long[] {5, 5, 1};

예상 출력:
long expected = 5;

설명

정렬 결과: 1, 5, 5; 2번째로 작은 값은 5입니다 (중복도 개수에 포함).

참고 자료

이 문제는 CodeUtility에 맞게 수정되었습니다. 위의 설명과 제한 조건을 따르세요.

다른 사람의 풀이 보기

커뮤니티 솔루션

아직 공개된 풀이가 없습니다. 문제를 풀고 첫 풀이를 공유하세요.