Skip to content

Commit 6c7e7cb

Browse files
committed
[Week03] BOJ: 휴게소 세우기
1 parent fc92033 commit 6c7e7cb

File tree

1 file changed

+57
-0
lines changed

1 file changed

+57
-0
lines changed
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
#include <iostream>
2+
#include <vector>
3+
#include <algorithm>
4+
5+
using namespace std;
6+
7+
vector<int> v;
8+
9+
// 휴게소 간 최대 거리를 x로 했을 때, 설치 가능한 휴게소의 수를 리턴
10+
int chk(int x) {
11+
int cnt = 0;
12+
for (int i = 0; i < v.size() - 1; i++) {
13+
int gap = v[i + 1] - v[i];
14+
15+
if (gap % x == 0) {
16+
cnt += gap / x - 1;
17+
}
18+
else {
19+
cnt += gap / x;
20+
}
21+
}
22+
23+
return cnt;
24+
}
25+
26+
int main() {
27+
int n, m, l;
28+
cin >> n >> m >> l;
29+
30+
for (int i = 0; i < n; i++) {
31+
int x;
32+
cin >> x;
33+
v.push_back(x);
34+
}
35+
v.push_back(0);
36+
v.push_back(l);
37+
38+
sort(v.begin(), v.end());
39+
40+
int left = 1;
41+
int right = l;
42+
int mid;
43+
while (left <= right) {
44+
mid = (left + right) / 2; // mid: 휴게소 간 최대 거리
45+
46+
int cnt = chk(mid);
47+
48+
if (cnt <= m) {
49+
right = mid - 1;
50+
}
51+
else {
52+
left = mid + 1;
53+
}
54+
}
55+
56+
cout << left;
57+
}

0 commit comments

Comments
 (0)