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
- SQL
- 코딩테스트
- Priority Queue
- JavaScript
- 구현
- boj
- hash table
- DFS
- CSV
- spring boot
- Vue.js
- SWEA
- GitHub
- aws
- Linked list
- 모의SW역량테스트
- BFS
- django
- 코테
- Data Structure
- 시뮬레이션
- Bruth Force
- gpdb
- 알고리듬
- Back tracking
- 알고리즘
- Trie
- programmers
- Algorithm
- Python
Archives
- Today
- Total
hotamul의 개발 이야기
[Algorithm][C++] BOJ 11048 이동하기 본문
myt-algorithm-practice/Samsung SW Certi Adv
[Algorithm][C++] BOJ 11048 이동하기
hotamul 2021. 9. 8. 16:32url: https://www.acmicpc.net/problem/11048
11048번: 이동하기
준규는 N×M 크기의 미로에 갇혀있다. 미로는 1×1크기의 방으로 나누어져 있고, 각 방에는 사탕이 놓여져 있다. 미로의 가장 왼쪽 윗 방은 (1, 1)이고, 가장 오른쪽 아랫 방은 (N, M)이다. 준규는
www.acmicpc.net
풀이 핵심
1. 전형적 dynamic programing 문제
2. map[1001][1001], ans[1001][1001] 생성
3. 점화식 ans[r][c] = map[r][c] + max(map[r-1][c], map[r][c-1], map[r-1][c-1])
코드
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int R, C;
int map[1001][1001];
int ans[1001][1001];
int get_max(int a, int b, int c) {
return a > b ? (a > c ? a : c) : (b > c ? b : c);
}
int main() {
scanf("%d %d", &R, &C);
for (int i = 1; i <= R; i++) {
for (int j = 1; j <= C; j++) {
scanf("%d", &map[i][j]);
}
}
for (int i = 1; i <= R; i++) {
for (int j = 1; j <= C; j++) {
ans[i][j] = map[i][j] + get_max(ans[i - 1][j], ans[i][j - 1], ans[i - 1][j - 1]);
}
}
printf("%d", ans[R][C]);
return 0;
}
아쉬운 점
1. DP 문제를 많이 접해보지 못해 dfs로 풀 생각만 했다
2. 시간 초과 나올 때는 DP 문제인지 생각하기
3. 점화식 만들 때 거꾸로 생각해보기
'myt-algorithm-practice > Samsung SW Certi Adv' 카테고리의 다른 글
[Algorithm][C++] BOJ 2234 성곽 (0) | 2021.09.12 |
---|---|
[Algorithm][C++] BOJ 17144 미세먼지 안녕! (0) | 2021.09.09 |
[Algorithm][C++] BOJ 16235 나무 제테크 (0) | 2021.09.08 |
[Algorithm][C++] BOJ 1600 말이 되고픈 원숭이 (0) | 2021.09.06 |
[Algorithm][C++] BOJ 4991 로봇 청소기 (0) | 2021.09.02 |