이 문제에서는 양수 값으로 구성된 n 크기의 배열 arr[]이 제공됩니다. 우리의 임무는 관계 연산자를 사용하지 않고 배열에서 최대값을 찾는 것입니다.
문제를 이해하기 위해 예를 들어보겠습니다.
입력: arr[] ={5, 1, 6, 7, 8, 2}
출력: 8
해결 방법
논리 연산자를 사용하지 않고 값을 비교해야 하기 때문입니다. 이를 위해 우리는 반복적인 빼기를 수행해야 하며 더 오래 지속되는 숫자가 더 커질 것입니다.
모든 값이 0이 될 때까지 1씩 감소합니다. 배열의 처음 두 값으로 시작하여 둘 중 가장 큰 값을 찾습니다. 그런 다음 나머지 배열 값을 배열의 가장 큰 요소와 비교해야 합니다. 이것을 사용하여 모든 요소의 최대값을 찾습니다.
우리 솔루션의 작동을 설명하는 프로그램,
예
#include <iostream>
using namespace std;
int returnMax(int x, int y) {
int c = 0;
while(x || y)
{
if(x)
x--;
if(y)
y--;
c++;
}
return c;
}
int findMaxEle(int A[], int N) {
int maxVal = A[0];
for (int i = N-1; i; i--)
maxVal = returnMax(maxVal, A[i]);
return maxVal;
}
int main() {
int A[] = {5, 1, 6, 7 , 8, 2};
int N = sizeof(A) / sizeof(A[0]);
cout<<"The maximum element of the array is "<<findMaxEle(A, N);
return 0;
} 출력
The maximum element of the array is 8>