Algorithm/C++ - BOJ
BOJ/백준 - 2891 카약과 강풍 C++
ㅇㅇ잉
2021. 3. 2. 22:49
1. 모든 팀이 카약을 가지고 있다고 가정하며 vector의 초기값을 1(=팀이 가진 카약 갯수)로 잡는다.
2. 카약을 잃어버린 팀은 v[tmp]--; 하여 카약을 가지고 있지 않은(=0)것으로 만들어준다.
3. 카약 여분을 더 가지고 있는 팀은 v[tmp]++;해준다.
4. for문을 돌리면서 찾아주는데, v[i]==0이면 카약을 가지고 있지 않다는 것이므로 앞팀 뒷팀을 살핀다.
이때 앞팀을 먼저 살핀다!
빌려주면 다시 카약을 가진 갯수를 적절히 설정해준다.
5. 마지막에 v[i]==0이면 참가하지 못하는 팀, result++시켜 답 출력
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
35
36
37
38
39
40
41
42
43
44
45
|
#include <iostream>
#include <vector>
using namespace std;
int main() {
int N, S, R;
cin >> N >> S >> R;
vector<int> v(N+1, 1);
for (int i = 0; i < S; i++) {
int tmp;
cin >> tmp;
v[tmp]--;
}
for (int i = 0; i < R; i++) {
int tmp;
cin >> tmp;
v[tmp]++;
}
for (int i = 1; i <= N; i++) {
if (v[i] == 0) {
if (v[i - 1] == 2) {
v[i]++;
v[i-1]--;
}
else if (v[i + 1] == 2) {
v[i + 1]--;
v[i]++;
}
}
}
int result = 0;
for (int i = 1; i <= N; i++) {
if (v[i] == 0) result++;
}
cout << result;
return 0;
}
|
cs |