Mini
[틀림] 프로그래머스 징검다리 // 매개변수 탐색 본문
https://school.programmers.co.kr/learn/courses/30/lessons/43236
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
* 풀이
- 완탐 -> 50000Cn -> 불가

- 매개변수 탐색
- f(x) : 최소거리가 x일때, 제거대상 바위수가 n 이하인가?
- prev 변수가 킥이다.

#include <bits/stdc++.h>
using namespace std;
int ret,n;
int dist;
vector<int> rocks;
int go(int x){
int cnt=0;
int prev=0; //이전위치
for(auto rock : rocks){
//제거대상
if(abs(prev-rock) < x){
cnt++;
}
else{
prev=rock;
}
}
//마지막 처리
if(abs(prev-dist) < x){
cnt++;
}
return cnt <=n;
}
int solution(int _distance, vector<int> _rocks, int _n) {
dist=_distance;
rocks=_rocks;
n=_n;
sort(rocks.begin(),rocks.end());
int st=1;
int en=1000000000;
while(st<=en){
int mid = (st+en)/2;
if(go(mid)){
ret=mid;
st=mid+1;
}
else{
en=mid-1;
}
}
return ret;
}
* 의문
- 문제에서 바위 n개를 제거해야한다고 했는데
- cnt <= n 했는데 정답인이유?
- 그때의 x는 ret 후보임
- 딱 n개 사용일수도 있고 n개 미만일수도 있음
- but
- 더 작은 x를 찾아서 탐색하니까
- 더작은 x가 있다면 그게 답이 될것이기 때문.

'Algorithm > 매개변수 탐색' 카테고리의 다른 글
[틀림] 프로그래머스 징검다리 건너기 // 매개변수 탐색 (0) | 2025.05.02 |
---|---|
[틀림] 백준 1561 놀이공원 // 매개변수탐색, ret-1 추가탐색 (0) | 2025.03.12 |
[틀림] 백준 14627 파닭파닭 // 매개변수탐색, 나머지 구하기 (0) | 2025.03.10 |
[맞음] 백준 16434 드래곤앤던전 // 매개변수 탐색, long long, 선빵 (0) | 2025.03.10 |
[세모] 백준 6236 용돈관리 // 매개변수 탐색 (0) | 2025.03.07 |