2019 카카오 개발자 겨울 인턴십
문제 링크
https://programmers.co.kr/learn/courses/30/lessons/64062
C++ 풀이
#include <string>
#include <vector>
using namespace std;
bool check(int num, vector<int>& stones, int k) {
int N = 0;
for (int i = 0; i < stones.size(); i++) {
if (stones[i] - num <= 0)
N++;
else
N = 0;
if (N >= k)
return false;
}
return true;
}
int solution(vector<int> stones, int k) {
int left = 1;
int right = 200000001;
int mid = (left + right) / 2;
while (left <= right) { //이분탐색으로 가능한 최대 친구 수 찾기
if (check(mid, stones, k))
left = mid + 1;
else
right = mid - 1;
mid = (left + right) / 2;
}
return left;
}
이분탐색법을 활용하였다.
참고 사이트 (카카오 해설)
https://tech.kakao.com/2020/04/01/2019-internship-test/
반응형
'알고리즘 · 코딩' 카테고리의 다른 글
[프로그래머스] 콜라츠 추측 (0) | 2020.04.27 |
---|---|
[프로그래머스] 하샤드 수 (0) | 2020.04.26 |
[프로그래머스] 정수 제곱근 판별 (0) | 2020.04.21 |
[프로그래머스] 이상한 문자 만들기 (0) | 2020.04.21 |
[프로그래머스] 호텔 방 배정 (0) | 2020.04.21 |