백준 2579번 : 계단 오르기 / C++
2023. 2. 20. 16:38ㆍ개인공부/코딩테스트
동적 계획법 문제로 계단을 배열로 생각하면 계단을 2칸 이동이 가능한 경우와 1,2칸을 자요롭게 이동가능한 경우가 있으므로 한 배열을 2개로 나눠서 차근차근 최댓값을 저장했다.
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
46
47
48
49
|
#include <iostream>
using namespace std;
int main()
{
// Arr[300][x] : x = 0 :무조건 2칸 x = 1 : 1칸,2칸 자유롭게 올라감
int Arr[300][2] = {};
int stairs = 1;
cin >> stairs;
for (int i = 0; i < stairs; ++i)
{
int score = 0;
cin >> score;
if (i == 0)
{
Arr[0][1] = score;
continue;
}
if (i == 1)
{
Arr[1][0] = Arr[0][1] + score;
Arr[1][1] = score;
continue;
}
Arr[i][0] = Arr[i - 1][1] + score;
if (Arr[i - 2][1] > Arr[i - 2][0])
Arr[i][1] = Arr[i-2][1] + score;
else
Arr[i][1] = Arr[i-2][0] + score;
}
if (Arr[stairs - 1][0] > Arr[stairs - 1][1])
cout << Arr[stairs - 1][0];
else
cout << Arr[stairs - 1][1];
return 0;
}
|
cs |
'개인공부 > 코딩테스트' 카테고리의 다른 글
백준 10844번 : 쉬운 계단 수 / C++ (0) | 2023.02.22 |
---|---|
백준 1463번: 1로 만들기 / C++ (0) | 2023.02.21 |
백준 24416번 : 알고리즘 수업 - 피보나치 수 1 / C++ (0) | 2023.02.20 |
백준 14889번: 스타트와 링크 / C++ (0) | 2023.02.19 |
백준 14888번 : 연산자 끼워넣기 (0) | 2023.02.19 |