일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 네트워크 관리사 2급 실기
- it 뉴스
- 백준위
- 싸피
- 구글
- html
- 네트워크 관리사 2급
- 네트워크 관리사
- 신문 스크랩
- IT 트렌드
- 리얼클래스
- python
- SSAFY 7기
- 백준
- SSAFYcial
- 신문스크랩
- KT
- Java
- 코테
- java 객체지향 프로그래밍
- 코딩테스트 연습
- 우테코
- IT 동향
- SSAFY
- 프로그래머스
- 코딩테스트
- 인앱결제
- it 이슈
- 카카오
- 싸피셜
Archives
- Today
- Total
개발자일걸요..?
2110번 공유기 설치 본문
728x90
반응형
문제링크 : www.acmicpc.net/problem/2110
2110번: 공유기 설치
첫째 줄에 집의 개수 N (2 ≤ N ≤ 200,000)과 공유기의 개수 C (2 ≤ C ≤ N)이 하나 이상의 빈 칸을 사이에 두고 주어진다. 둘째 줄부터 N개의 줄에는 집의 좌표를 나타내는 xi (0 ≤ xi ≤ 1,000,000,000)가
www.acmicpc.net
<알고리즘>
1) 집들 간의 거리에서 가장 작은 값을 left, 가장 큰 값을 right로 놓는다.
2) middle = (left+right)/2 는 집들 간의 거리를 나타내고 함수를 이용해 해당 집들의 배열에서 최소 middle씩만큼 떨어뜨려 공유기 설치가 가능한지 확인
2-1) 설치가 가능하다면, 그 값을 임시로 저장. & left = middle+1로 범위를 변경한다.
2-2) 설치가 불가능하다면 right = middle-1로 범위를 변경한다.
3) left<=right인 동안 2번을 반복해서 확인.
4) 앞서 2-1을 통해 저장해 놓은 값을 출력(마지막에 저장된 값이 가능한 값중 가장 큰 값.)
메모리 : 2804KB 시간 : 64ms
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
bool point(vector<int> home, int C, int middle) {
int cnt = 1;
int before = home[0];
for (int i = 1; i < home.size(); i++) {
if (home[i] - before >= middle) {
cnt += 1;
before = home[i];
}
}
if (cnt >= C) {
return true;
}
return false;
}
int main() {
int N = 0;
int C = 0;
cin >> N >> C;
vector<int>home(N, 0);
for (int i = 0; i < N; i++) {
cin >> home[i];
}
sort(home.begin(), home.end());
int left = 1;
int right = home[N - 1] - home[0];
int middle = 0;
int result = 0;
while (left <= right) {
middle = (left + right) / 2;
if (point(home, C, middle)) {
result = max(result, middle);
left = middle + 1;
}
else {
right = middle - 1;
}
}
cout << result;
return 0;
}
반응형
'알고리즘코딩 > Baekjoon Online Judge' 카테고리의 다른 글
2740번 행렬 곱셈 (0) | 2021.04.01 |
---|---|
12015번 가장 긴 증가하는 부분 수열 (0) | 2021.03.30 |
1300번 K번째 수 (0) | 2021.03.28 |
2805번 나무자르기 (0) | 2021.03.27 |
1149번 RGB 거리 (0) | 2021.03.25 |
Comments