728x90
https://www.acmicpc.net/problem/1890
DP로 풀면 되는데 자료형을 주의해야한다.
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int arr[100][100];
long long dp[100][100] = { 0, };
int main() {
int n, i, j, tmp;
scanf("%d", &n);
int* arr = (int*)malloc(sizeof(int) * n * n);
long long* dp = (long long*)malloc(sizeof(long long) * n * n);
memset(dp, 0, sizeof(long long) * n * n);
for (i = 0; i < n; i++)
for (j = 0; j < n; j++)
scanf("%d", &arr[i * n + j]);
dp[0] = 1;
for (i = 0; i < n; i++) {
for (j = 0; j < n; j++) {
if (dp[n * i + j] && arr[n * i + j]) {
tmp = j + arr[i*n+j];
if (tmp < n)
dp[i * n + tmp] += dp[i * n + j];
tmp = i + arr[i * n + j];
if (tmp < n)
dp[tmp * n + j] += dp[i * n + j];
}
}
}
printf("%lld\n", dp[(n - 1) * n + n - 1]);
free(arr);
free(dp);
return 0;
}
쉬운 문제이지만 포인터에 익숙해지기위해 배열을 동적할당해서 풀어보았다.
'STUDY > Algorithm' 카테고리의 다른 글
[백준] 1197 최소 스패닝 트리 python (0) | 2022.02.22 |
---|---|
[백준] 11655 ROT13 C,C++ (0) | 2022.02.21 |
[백준] 21317 징검다리 건너기 C++ (0) | 2022.02.19 |
[백준] 9019 DSLR C++ (0) | 2022.02.18 |
[백준] 1717 집합의 표현 python (0) | 2022.02.17 |