배열 A와 또 다른 두 개의 정수 K와 M이 있다고 가정해 봅시다. 우리는 배열을 자신에 M번 연결한 후 K번째 최소 요소를 찾아야 합니다. 배열이 A =[3, 1, 2], K =4 및 M =3과 같으므로 A를 3번 연결하면 [3, 1, 2, 3, 1, 2, 3, 1이 됩니다. , 2], 여기서 4번째로 작은 요소는 2입니다.
이 문제를 해결하기 위해 배열 A를 정렬한 다음 배열의 인덱스((K – 1)/M)에 있는 값을 반환합니다.
예시
#include<iostream> #include<algorithm> using namespace std; int findKSmallestNumber(int A[], int N, int M, int K) { sort(A, A + N); return (A[((K - 1) / M)]); } int main() { int A[] = { 3, 1, 2 }; int M = 3, K = 4; int N = sizeof(A) / sizeof(A[0]); cout << K << "th smallest number after concatenating " << M << " times, is: "<<findKSmallestNumber(A, N, M, K); }
출력
4th smallest number after concatenating 3 times, is: 2