알고리즘 문제풀기/인프런 강의 정답
65. 미로탐색 (2차원 배열 DFS)
코다람쥐
2022. 5. 13. 17:31
나의정답.
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <string>
#include <algorithm>
#include <vector>
#include <stack>
using namespace std;
int cnt = 0;
int vRow[4] = { 0,1,0,-1 };
int vCol[4] = { 1, 0, -1, 0 }; // right(0) down(1) left(2) up(3)
int map[10][10] = { 0 };
void dfs(int row, int col) {
if (row == 7 && col == 7) { // 도착지점 (7,7)
cnt++;
}
else if ((row > 7 || col > 7) || (row < 1 || col < 1)) { // (1, 1)~(7, 7)을 벗어나면 함수종료
return;
}
else {
for (int i = 0; i < 4; i++) {
if (map[row + vRow[i]][col + vCol[i]] == 1 ) continue;
map[row][col] = 1;
dfs(row + vRow[i], col + vCol[i]);
map[row][col] = 0;
}
}
}
int main(int argc, char** argv) {
//freopen("input.txt", "rt", stdin);
for (int i = 1; i <= 7 ; i++) {
for (int j = 1; j <= 7; j++) {
scanf("%d", &map[i][j]);
}
}
dfs(1, 1); // 출발지점(1, 1)
printf("%d", cnt);
}