Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- insertion sort
- Algorithm
- s
- 이스케이프 문자
- C programming
- coding test
- 이것이 자바다
- 윤성우의 열혈 자료구조
- R
- Serialization
- stream
- Selection Sorting
- datastructure
- C 언어 코딩 도장
- list 컬렉션
- 메모리구조
- Graph
- buffer
- Stack
- 윤성우 열혈자료구조
- 혼자 공부하는 C언어
- JSON
- 알기쉬운 알고리즘
Archives
- Today
- Total
Engineering Note
[BOJ:11048]이동하기 본문
11048번: 이동하기
준규는 N×M 크기의 미로에 갇혀있다. 미로는 1×1크기의 방으로 나누어져 있고, 각 방에는 사탕이 놓여져 있다. 미로의 가장 왼쪽 윗 방은 (1, 1)이고, 가장 오른쪽 아랫 방은 (N, M)이다. 준규는
www.acmicpc.net
코드
#include <stdio.h>
int candy[1001][1001];
int map[1001][1001];
int n, m;
int Bigger(int a, int b) {
if (a > b)return a;
else return b;
}
void Sol() {
for (int i = 1; i <= n; ++i) {
for (int j = 1; j <= m; ++j) {
int result = Bigger(Bigger(candy[i - 1][j], candy[i][j - 1]), candy[i - 1][j - 1]);
candy[i][j] = result + map[i][j];
}
}
printf("%d\n", candy[n][m]);
}
int main() {
freopen("input.txt", "rt", stdin);
scanf("%d%d", &n, &m);
for (int i = 1; i <= n; ++i) {
for (int j = 1; j <= m; ++j) {
scanf("%d",&map[i][j]);
}
}
Sol();
return 0;
}
문제해결방법
- 처음에 문제를 읽고 DFS로 완전탐색을 하였다. 완전탐색으로 풀 경우 시간초과가 발생한다
- 각 경우의 최대 값을 구하는 방법은 (i,j)에 위치한 곳 까지의 최대 값은 (i-1,j), (i,j-1), (i-1,j-1)중에 최대값과 (i,j)의 사탕의 최대값을 합하면 (i,j)까지의 사탕의 최대값을 구할 수 있다.
'Problem Solving > BOJ' 카테고리의 다른 글
[BOJ:16234] 인구 이동 (0) | 2021.05.22 |
---|---|
[BOJ:2259번] 부등호 (0) | 2021.05.13 |
[BOJ:1065] 한수 (0) | 2021.05.08 |
[BOJ:1450] 냅색문제 (0) | 2021.04.29 |
[BOJ:11047번] 동전 0 (0) | 2021.04.06 |
Comments