https://programmers.co.kr/learn/courses/30/lessons/64062
#include <string>
#include <vector>
#include <algorithm>
#include <iostream>
using namespace std;
bool check(vector<int> &stones, int K, int mid) {
int count = 0;
for (int i = 0; i < stones.size(); i++) {
if (stones[i] < mid) {
count++;
}
else {
count = 0;
}
if (count == K) return false;
}
return true;
}
int solution(vector<int> stones, int k) {
int answer = 0;
int left = 1, right = *max_element(stones.begin(), stones.end());
while (left <= right) {
int mid = (left + right) / 2;
if (check(stones,k,mid)) {
answer = mid;
left = mid + 1;
}
else {
right = mid - 1;
}
}
return answer;
}
'전공공부 > 코딩테스트' 카테고리의 다른 글
(c++) 백준 "1811) 마인크래프트" (0) | 2022.06.05 |
---|---|
(c++) 백준 "2805) 나무 자르기" (0) | 2022.06.04 |
(c++) 백준 "10814) 나이순 정렬" (0) | 2022.06.03 |
(c++) 백준 "2609) 최대공약수와 최소공배수" (0) | 2022.06.03 |
(c++) 백준 "1436) 영화감독 슘" (0) | 2022.06.03 |