Coding Test - cpp/DFS
[백준 2210: 숫자판 점프] - C++
에드윈H
2021. 2. 18. 17:03
2210번: 숫자판 점프
111111, 111112, 111121, 111211, 111212, 112111, 112121, 121111, 121112, 121211, 121212, 211111, 211121, 212111, 212121 이 가능한 경우들이다.
www.acmicpc.net
#include <iostream>
using namespace std;
int map[6][6];
int dir[4][2] = {
{-1,0}
,{0,1}
,{1,0}
,{0,-1}
};
int check[1000000];
int result;
void dfs(int x, int y, int sum, int depth) {
if (depth == 5)
{
if (check[sum] == 0)
{
check[sum] = 1;
result++;
}
return;
}
for (int i = 0; i < 4; i++) {
int nx = x + dir[i][0];
int ny = y + dir[i][1];
if (nx < 1 || ny < 1 || nx>5 || ny>5)
{
continue;
}
int nextNum = (sum * 10) + map[nx][ny];
dfs(nx, ny, nextNum, depth + 1);
}
}
int main()
{
for (int i = 1; i <= 5; i++)
{
for (int j = 1; j <= 5; j++)
{
cin >> map[i][j];
}
}
for (int i = 1; i <= 5; i++)
{
for (int j = 1; j <= 5; j++)
{
dfs(i, j, map[i][j], 0);
}
}
cout << result;
}