본문 바로가기
Programming/BOJ

#1353 합과 곱(Mathematics, Binary Search)

by 작은별하나 2020. 2. 1.
반응형

이번 문제는  Platinum V 난이도로 설정된 문제입니다.  정답자도 39명뿐입니다.  난이도에 비해서 많이 풀지 않은 문제입니다.

 

수학적 지식으로는 산술평균과 기하평균의 대소 비교만 알고 있으면 쉽게 풀 수 있습니다.

 

Arithmatic and Geometric Means

수열 A가 있는데, 이 수열에 있는 수들을 합하면 S, 곱하면 P의 값을 가집니다.  예를 들어서 { 1, 3, 2 } 수열이라면, S=6, P=6이 됩니다.  문제는 이러한 S와 P가 주어질 때, 만족하는 양의 실수 수열의 최소 크기를 구하라는 것입니다.  문제에서는 음이 아닌 실수이지만, P의 범위가 1 이상이므로 양의 실수만 생각해도 됩니다.  S=6, P=6 이라면, { 1, 3, 2 } 도 되지만, { 6 } 도 가능하므로, 최소 수열의 수 갯수는 1이 됩니다.

 

이 문제를 풀기 위해서는 산술평균과 기하평균과의 관계를 이용했습니다.  갯수가 n인 수열의 경우 합과 곱은 다음과 같은 부등식으로 표현할 수 있습니다.

 

\[ \frac{S}{n} \ge \sqrt[n]{P} \]

\[ (\frac{S}{n})^n \ge P \]

 

모든 원소들이 양의 실수이므로 위의 식은 항상 성립합니다.  등호는 모든 원소들이 동일할 때 성립합니다.

 

n을 찾을 때에는 이분탐색을 이용했습니다.  만족하는 n 중에 최소값을 찾기 위해서 \( (\frac{S}{n})^n \) 이 최대가 되는 n을 찾습니다.  수학적으로는 \( n = \frac{S}{e} \) 일 때, 최대값을 가집니다.  미분을 한 후에 해당값이 0이 되는 지점입니다.

 

적절하게 정수 n을 선택한 후, 최대값인 경우에 P보다 작으면 이 문제의 답이 없는 것이므로 -1을 출력합니다.  그 외에는 이분탐색으로 검색하면서 최소값을 찾았습니다.

 

728x90

댓글