-
Notifications
You must be signed in to change notification settings - Fork 4
/
Lv4_스티커모으기(2).cpp
34 lines (28 loc) · 766 Bytes
/
Lv4_스티커모으기(2).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
32
33
34
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int solution(vector<int> sticker)
{
int answer = 0;
vector<int> d(sticker.size(), 0);
if (sticker.size() == 1)
return sticker[0];
else if (sticker.size() == 2)
return max(sticker[0], sticker[1]);
else {
// 첫번째 스티커 사용
d[0] = sticker[0];
d[1] = sticker[0];
for (int i = 2; i < sticker.size() - 1; i++) // 맨마지막은 사용 불가
d[i] = max(d[i - 2] + sticker[i], d[i - 1]);
answer = d[sticker.size() - 2];
// 첫번째 스티커 사용 x
d[0] = 0;
d[1] = sticker[1];
for (int i = 2; i < sticker.size(); i++)
d[i] = max(d[i - 2] + sticker[i], d[i - 1]);
answer = max(answer, d[sticker.size() - 1]);
}
return answer;
}