티스토리 뷰
반응형
⊙ 문제
⊙ 입력
⊙ 출력
⊙ 예제 입출력
⊙ 알고리즘 분류
- 이분 탐색
- 매개 변수 탐색
⊙ 문제 접근 과정
문제 요약: 공유기를 설치할 건데 가능한 멀리 설치하고 싶다. (같은 좌표는 없다)
여러 풀이방법이 있지만 이진 탐색 알고리즘을 사용하여 문제에 접근했다.
이진 탐색을 이용하여 문제를 풀 때 index가 아닌 거리로 두고 풀어야 한다. (거리기준)
- n(집의 개수), c(공유기 개수), x(집 좌표) 값 입력받는다.
- x값 정렬
- 거리 기준으로 이진 탐색
- 결괏값 출력
무엇을 기준으로 잡을지 애먹었다.
⊙ 문제 풀이
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int n,c;
vector<int> x;
int main() {
cin >>n>>c;
for(auto i =0; i<n;i++) {
int a;
cin >> a;
x.push_back(a);
}
sort(x.begin(),x.end());
int start=0;
int end=x[n-1];
int result=0;
int temp,count;
while(start<=end) {
int mid = (start+end)/2;
temp=0, count =1;
for(auto i=1;i<n;i++) {
if(x[i]-x[temp]>=mid) {
temp=i;
count++;
}
}
if(count>=c) {
result=mid;
start=mid+1;
}else {
end=mid-1;
}
}
cout <<result;
}
⊙ 결과
⊙ 마무리
푸는데 어려웠다 ㅠ
좋아요는 로그인하지 않아도 누를 수 있습니다!
728x90
반응형
'백준 온라인 저지 [BOJ] > C++ [CPP]' 카테고리의 다른 글
[백준(BOJ)] 11053번 : 가장 긴 증가하는 부분 수열 - C++[CPP] (0) | 2021.05.13 |
---|---|
[백준(BOJ)] 2512번 : 예산 - C++[CPP] (2) | 2021.05.12 |
[백준(BOJ)] 2884번 : 알람 시계 - C++[CPP] (0) | 2021.05.11 |
[백준(BOJ)] 10816번 : 숫자 카드 2 - C++[CPP] (0) | 2021.05.10 |
[백준(BOJ)] 1789번 : 수들의 합 - C++[CPP] (0) | 2021.05.10 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- C++
- 자바
- 정리
- py
- 백준
- Python
- OS
- 자바스크립트
- 쉽게 배우는 자바 프로그래밍
- 구현
- 알고리즘
- 답
- JS
- 쉽게배우는자바프로그래밍
- 프로그래머스
- 연습문제
- 정렬
- 그리디
- 풀이
- 문자열
- 정답
- 파이썬
- 우종정
- 쉽게배우는
- Web
- java
- 해답
- BFS
- CPP
- 운영체제
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
글 보관함