반응형
문제)
price[i]는 i번째 사탕의 가격을 나타내고 양의 정수 k와 양의 정수 price 배열이 제공된다.
그 가게에서는 k개의 서로 다른 사탕이 담긴 바구니를 판매한다.
사탕 바구니의 맛은 바구니에 들어 있는 두 사탕 가격의 가장 작은 차이의 절대값 이다.
사탕 바구니의 최대 맛을 반환.
문제 난이도 : 중
소요시간 및 풀이)
이분탐색을 이용하여 풀었다.
소요 시간 : 33분
정답 코드
class Solution
{
public:
int maximumTastiness(vector<int>& price, int k)
{
sort(price.begin(), price.end());
auto check = [&](int target, int count = 1) -> bool
{
for (int i = 1, j = 0; i < price.size(); i++)
{
if (price[i] - price[j] >= target)
{
j = i;
count++;
}
}
return count >= k;
};
auto left = 0;
auto right = (int)price.back() - price.front() + 1;
while (left < right)
{
auto mid = left + (right - left) / 2;
if (check(mid))
left = mid + 1;
else
right = mid;
}
return left - 1;
}
};
반응형
'코딩 테스트 연습' 카테고리의 다른 글
LeetCode : 2380. Time Needed to Rearrange a Binary String (0) | 2024.06.07 |
---|---|
LeetCode : 2460. Apply Operations to an Array (0) | 2024.06.07 |
LeetCode : 2376. Count Special Integers (0) | 2024.06.06 |
LeetCode : 2384. Largest Palindromic Number (0) | 2024.06.06 |
LeetCode : 2389. Longest Subsequence With Limited Sum (0) | 2024.06.06 |