#include <string> #include <vector> #include <algorithm> using namespace std; int cal(vector<int> rocks, int mid, int distance) { int cnt = 0; int prev = 0; for(int i = 0; i < rocks.size(); i++) { if(rocks[i] - prev < mid) { cnt++; } else { prev = rocks[i]; } } // 도착지점과 마지막 돌 체크 if(distance - prev < mid) { cnt++; } return cnt; } int solution(int distance, vector<int> rocks, int n) { int Max = 0; int left = 1; int right = distance; sort(rocks.begin(), rocks.end()); while(left <= right) { // 바위 사이 거리의 최솟값 int mid = (left + right) / 2; if(cal(rocks, mid, distance) > n) { right = mid-1; } else { left = mid+1; if(mid > Max) { Max = mid; } } } return Max; } | cs |
'Programmers > Level 4' 카테고리의 다른 글
[프로그래머스 4] 4단 고음 (C/C++) (★★★) (0) | 2020.03.11 |
---|---|
[프로그래머스 4] 블록 게임 (C/C++) (★★) (0) | 2020.03.05 |
[프로그래머스 4] 카드게임 (C/C++) (★★) (0) | 2020.01.15 |
[프로그래머스 4] 도둑질 (C/C++) (★) (0) | 2020.01.15 |