https://www.acmicpc.net/problem/1449
1449번: 수리공 항승
첫째 줄에 물이 새는 곳의 개수 N과 테이프의 길이 L이 주어진다. 둘째 줄에는 물이 새는 곳의 위치가 주어진다. N과 L은 1,000보다 작거나 같은 자연수이고, 물이 새는 곳의 위치는 1,000보다 작거나
www.acmicpc.net
물이 새는 곳을 다 막을 수 있는 테이프의 최소 개수를 알아봐야 한다.
구멍난 곳부터 시작해서 막는 것이 더 많은 범위를 커버할 수 있다. (그리디 알고리즘)
해설코드(C++).
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
32
33
34
|
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
int N, L;
int val, answer = 0;
vector<int> v;
int main() {
cin >> N >> L;
for(int i = 1; i <= N; i++){
cin >> val;
v.push_back(val);
}
sort(v.begin(), v.end());
L -= 1;
if(v.size() > 0){
int start = v[0] + L;
answer += 1;
for(int i = 1; i < v.size(); i++){
if(start < v[i]){
start = (v[i] + L);
answer += 1;
}
}
}
cout << answer << endl;
return 0;
}
|
'알고리즘 > 백준' 카테고리의 다른 글
[BOJ 7569] 토마토(JAVA, BFS, QUEUE) (0) | 2020.08.07 |
---|---|
[BOJ 11652] 카드(자바 적응기, 자료구조, Hashmap sort by key and value) (0) | 2020.08.06 |
[BOJ 2437] 저울(C++, 자세한 설명) (0) | 2020.07.11 |
[BOJ 1783] 병든 나이트(C++) (0) | 2020.07.10 |
[BOJ 1138] 한 줄로 서기(C++). (0) | 2020.07.02 |