문제
https://algospot.com/judge/problem/read/JUMPGAME
걸린 시간
00 : 44 : 55
풀이
C++
#include <stdio.h>
#include <iostream>
#include <string.h>
#define MAX 101
using namespace std;
int n;
int land[MAX][MAX];
int visited[MAX][MAX];
bool canFinish(int r, int c){ // row, col
int v = land[r][c]; // value
if(r < n and c < n){
if(v == 0)
return true;
if(!visited[r][c]){
visited[r][c] = 1;
if(canFinish(r+v, c) or canFinish(r, c+v))
return true;
else
return false;
}
}
return false;
}
int main(){
int C;
scanf("%d", &C);
while(C--){
scanf("%d", &n);
for(int r = 0; r < n; r++)
for(int c = 0; c < n; c++)
cin >> land[r][c];
memset(visited, 0, sizeof(visited));
if(canFinish(0, 0))
printf("%s\n", "YES");
else
printf("%s\n", "NO");
}
return 0;
}
종만북 dp 단원 난이도 하 문제이다.
다음과 같은 실수들로 구현, 디버깅, 오류해결에 시간이 많이 걸렸다.
- 입력 크기보다 작은 크기의 배열 선언함.
- visited 배열을 선언해 두고 방문할 때 값을 변경하지 않았음.
- 이동한 좌표가 범위를 벗어나는지 확인하는 조건문의 범위를 잘못 설정함.
1번은 배열의 크기를 100으로 해도 전혀 문제될 것이 없어 보이는데 런타임 에러가 난다. cin 으로 입력을 받아서일까?
'ALGOSPOT' 카테고리의 다른 글
algospot MATCHORDER 출전 순서 정하기 (0) | 2020.08.26 |
---|---|
algospot TSP1 여행하는 외판원 문제 1 (0) | 2020.08.23 |
algospot TRIANGLEPATH 삼각형 위의 최대 경로 (0) | 2020.08.20 |
algospot WILDCARD 와일드카드 (0) | 2020.08.20 |
algospot FESTIVAL 록 페스티벌 (0) | 2020.08.19 |
댓글