문제
양의 정수 a < b < c에 대해 a² + b² = c²이고 a + b + c = perimeter를 만족하는 삼각형을 찾으세요. 조건을 만족하는 삼각형 중에서 a × b × c의 최댓값을 반환하세요. 해당하는 삼각형이 없으면 −1을 반환하세요. 이 문제는 고정된 둘레의 원문 문제를 일반화한 것으로, 여러 해답이 있을 때도 명확히 처리합니다.
pythagorean_product(perimeter)를 구현하세요.
입력
perimeter: 세 변의 합으로 주어지는 값입니다.
출력
조건을 만족하는 삼각형의 세 변 곱의 최댓값을 반환하세요. 해당 삼각형이 없으면 −1을 반환하세요.
제약 조건
3 ≤ perimeter ≤ 100,000. 곱은 부호 있는 64비트 정수 범위 내에 있습니다.
예시
입력:
perimeter = 30
예상 출력:
expected = 780
입력:
long long perimeter = 30;
예상 출력:
long long expected = 780;
입력:
long perimeter = 30;
예상 출력:
long expected = 780;
설명
삼각형은 (5, 12, 13)입니다: 25 + 144 = 169이고 5 + 12 + 13 = 30입니다. 곱은 780입니다.
입력:
perimeter = 11
예상 출력:
expected = -1
입력:
long long perimeter = 11;
예상 출력:
long long expected = -1;
입력:
long perimeter = 11;
예상 출력:
long expected = -1;
설명
증가하는 양의 정수 직각삼각형 변의 합이 11이 되는 경우는 없습니다.
접근 방법
먼저 스스로 풀어 본 뒤 힌트를 하나씩 열어 보세요.
힌트 1
직각삼각형이 될 수 있는 둘레는 제한적이므로, 먼저 변의 합 조건으로 범위를 줄이세요.
힌트 2
가능한 가장 짧은 변마다, 둘레로 나머지 두 변을 구해 직각 조건을 확인하세요.
힌트 3
조건을 만족하는 삼각형이 여러 개일 수 있으니, 가장 큰 곱을 유지하고 없으면 실패를 반환하세요.
예상 복잡도
시간 O(perimeter^2), 추가 공간 O(1)
참고 자료
이 문제는 CodeUtility에 맞게 수정되었습니다. 위의 설명과 제한 조건을 따르세요.