반응형
https://www.acmicpc.net/problem/11048
문제 접근 방법
- 원점으로부터 이동 할 수 있는 위치를 파악한다(우측, 우측 대각선 아래, 아래) 3가지 방향이다.
- 이동되는 점의 기준으로 보면 자신으로 올 수 있는 곳은 좌측, 좌측 대각선 위, 위 이렇게 3가지 방향이다.
- 가져올 수 있는 최대 사탕의 갯수를 구해야 하기 때문에 자신에게 올 수 있는 방향의 사탕 갯수를 비교하여 그중 가장 큰 값과 현재 자신 위치의 사탕 갯수를 더하면 최댓값이 된다.
아래는 코드입니다.
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
|
#include <iostream>
using namespace std;
int candyMap[1001][1001];
int totalCandy[1001][1001];
int MaxCheck(int a, int b, int c) // 3개중 가장 큰 것을 리턴하는 함수
{
return a > b ? (a > c ? a : c ) : b > c ? b : c;
}
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(0);
int N, M;
cin >> N >> M;
for (int i = 1; i <= N; i++)
{
for (int j = 1; j <= M; j++)
{
cin >> candyMap[i][j];
}
}
for (int i = 1; i <= N; i++)
{
for (int j = 1; j <= M; j++)
{
totalCandy[i][j] = MaxCheck(totalCandy[i - 1][j], totalCandy[i - 1][j - 1], totalCandy[i][j - 1]) + candyMap[i][j]; // 올 수 있는 방향 3가지로부터 비교하여 최대값 + 도달 위치에 있는 사탕 갯수를 더함
}
}
cout << totalCandy[N][M] << "\n";
return 0;
}
Colored by Color Scripter
|
반응형
'백준 문제풀이 > SILVER' 카테고리의 다른 글
[백준 / BOJ / SILVER 5] 1476 번 : 날짜 계산 (0) | 2020.03.04 |
---|---|
[백준 / BOJ / SILVER 3] 1748 번 : 수 이어쓰기 1 (0) | 2020.03.01 |
[백준 / BOJ / SILVER 1] 6064 번 : 카잉 달력 (0) | 2020.02.28 |
[백준 / BOJ / SILVER 2] 1890 번 : 점프 (0) | 2020.02.28 |
[백준 / BOJ / SILVER 2] 3184 번 : 양 (0) | 2020.02.26 |