이 문제에서는 n개의 정수로 구성된 배열 arr[]이 제공됩니다. 우리의 임무는 C++에서 배열의 최소 및 최대 요소를 찾는 프로그램을 만드는 것입니다.
문제 설명 − 여기에 배열 arr[]이 있습니다. 은 n개의 정수 값을 포함합니다. 배열의 모든 값 중에서 최대값과 최소값을 찾아야 합니다.
문제를 이해하기 위해 예를 들어보겠습니다.
입력
arr[] = {2, 1, 6, 9, 4, 10, 15, 21}
출력
max = 21 , min = 1
솔루션 접근 방식
문제에 대한 여러 솔루션이 있을 수 있습니다.
단일 솔루션 배열의 요소를 직접 비교합니다. 이는 배열의 각 요소를 확인하고 비교를 사용하여 최대값과 최소값을 찾는 방식으로 수행됩니다.
이것은 두 가지 다른 접근 방식을 사용하여 수행할 수 있습니다.
- 반복적 접근
- 재귀적 접근
문제를 해결하기 위한 반복적인 접근
배열을 반복하고 배열의 각 요소를 추출하고 배열의 최대 및 최소 요소와 비교합니다.
우리 솔루션의 작동을 설명하는 프로그램
예시
#include <iostream> using namespace std; void getMinMax(int arr[] , int N){ int max = arr[0], min = arr[0]; for(int i = 1; i < N; i++){ if(max < arr[i]) max = arr[i]; if(min > arr[i]) min = arr[i]; } cout<<"Maximum Value = "<<max<<"\n"; cout<<"Minimum Value = "<<min; } int main(){ int arr[] = {2, 1, 6, 9, 4, 10, 15, 21}; int N = 8; getMinMax(arr, N); return 0; }
출력
Maximum Value = 21 Minimum Value = 1
문제 해결을 위한 재귀적 접근
이 접근 방식에서는 배열의 모든 요소에 대해 반복해서 메서드를 재귀적으로 호출하여 배열의 모든 요소의 최대값과 최소값을 찾아 문제를 해결합니다.
우리 솔루션의 작동을 설명하는 프로그램
예시
#include <iostream> using namespace std; int CalcMinValue(int arr[], int n) { return (n == 1) ? arr[0] : min(arr[n - 1], CalcMinValue(arr, n - 1)); } int CalcMaxValue(int arr[], int n) { return (n == 1) ? arr[0] : max(arr[n -1], CalcMinValue(arr, n - 1)); } int main() { int arr[] = {2, 1, 6, 9, 4, 10, 15, 21}; int N = 8; cout<<"Maximum Value = "<<CalcMaxValue(arr, N)<<endl; cout<<"Minimum Value = "<<CalcMinValue(arr, N); return 0; }
출력
Maximum Value = 21 Minimum Value = 1
이 문제는 C++ 프로그래밍 언어의 표준 템플릿 라이브러리에서 제공하는 인빌드 함수를 사용하여 해결할 수도 있습니다.
솔루션을 찾는 방법은 min_element() 및 max_element()이며 이러한 방법은 C++의 bits/stdc++.h 라이브러리에 있습니다.
문제 해결을 설명하는 프로그램
예시
#include <bits/stdc++.h> using namespace std; int main() { int arr[] = {2, 1, 6, 9, 4, 10, 15, 21}; int N = 8; cout<<"Maximum Value = "<<(*max_element(arr, arr+N))<<endl; cout<<"Minimum Value = "<<(*min_element(arr, arr+N)); return 0; }
출력
Maximum Value = 21 Minimum Value = 1