📕 문제
📌 링크
![](https://velog.velcdn.com/images/wowns226/post/e61f3878-f1a7-46b4-9766-9dd8cabe27c0/image.png)
📗 접근 방식
- 입력받은 파일들의 크기 배열을 오름차순으로 정렬시킨다.
- 그 후, 각 파일에 대해 이진 탐색을 수행합니다. 이진 탐색을 통해 현재 파일의 0.9배보다 작은 파일들의 개수를 구합니다.
📘 코드
namespace BOJ_2428
{
class Program
{
static void Main()
{
int n = int.Parse(Console.ReadLine());
int[] files = Array.ConvertAll(Console.ReadLine().Split(), int.Parse);
Array.Sort(files);
long answer = 0;
for (int i = 1; i < n; i++)
{
answer += BinarySearch(i, files);
}
Console.WriteLine(answer);
}
static long BinarySearch(int index, int[] files)
{
int start = 0;
int end = index - 1;
while (start <= end)
{
int mid = (start + end) / 2;
if (files[mid] < files[index] * 0.9)
{
start = mid + 1;
}
else
{
end = mid - 1;
}
}
return index - start;
}
}
}
📙 오답노트
📒 알고리즘 분류