이 문제에서는 정수 배열이 제공됩니다. 우리의 임무는 배열의 요소를 삼각형의 측면으로 사용하여 비축퇴 삼각형이 생성되었는지 확인하는 것입니다.
비퇴화 삼각형 - 양의 면적을 갖는 삼각형입니다. 변이 a, b, c인 비축퇴 삼각형의 조건은 -
입니다.a + b > c a + c > b b + c > a
문제를 더 잘 이해하기 위해 예를 들어 보겠습니다 -
입력 - arr[2, 5, 9, 4, 3]
출력 − 예
설명 - 형성된 삼각형은 2 3 4입니다.
이 문제를 해결하기 위해 배열의 값이 위의 조건을 만족하는지 확인합니다.
네이비 솔루션에는 어레이의 모든 3중항을 직접 확인하는 작업이 포함됩니다.
더 효과적인 솔루션은 배열 요소를 정렬하고 배열의 세 연속 삼중항을 확인하는 것입니다. 정렬된 배열의 경우 두 요소의 합이 다음 값보다 크지 않으면 그 다음 값은 가치가 없습니다(이미 큼).
예
솔루션 구현을 보여주는 프로그램
#include <bits/stdc++.h> using namespace std; bool isTrianglePossible(int arr[], int N){ if (N < 3) return false; sort(arr, arr + N); for (int i = 0; i < N - 2; i++) if (arr[i] + arr[i + 1] > arr[i + 2]) return true; } int main() { int arr[] = {5, 12, 13, 65, 6, 1}; int N = sizeof(arr) / sizeof(int); cout<<"Creation of triangle from elements of array "; isTrianglePossible(arr, N)?cout<<"is Possible": cout<<"is not Possible"; return 0; }
출력
Creation of triangle from elements of array is Possible