쌓고 쌓다
[백준] 숫자판 점프 2210번 C++ 풀이 본문
https://www.acmicpc.net/problem/2210
#include <iostream>
#include <string>
#include <cstdlib>
using namespace std;
string arr[5][5];
bool visit[1000000];
int side[4][2] = { {-1,0},{1,0},{0,-1},{0,1} };
int res = 0;
void DFS(int y, int x, int cnt, string str)
{
if (cnt == 6)
{
if (visit[stoi(str)] == false) // stoi(str) : str을 int로 반환, 방문한적 없다면 추가
{
res++;
visit[stoi(str)] = true;
}
return;
}
for (int i = 0; i < 4; i++)
{
int ny = y + side[i][0];
int nx = x + side[i][1];
if(nx>=0&&ny>=0&&nx<5&&ny<5)
DFS(ny, nx, cnt + 1,str+arr[ny][nx]);
}
}
int main(void)
{
for (int i = 0; i < 5; i++)
for (int j = 0; j < 5; j++)
cin >> arr[i][j];
for (int i = 0; i < 5; i++)
for (int j = 0;j<5;j++)
DFS(i,j,0,"");
cout << res;
}
string 으로 안풀고 int로 풀려면 (선택한 횟수+1)*10에다가 선택한 수를 곱하여 주어 다음 깊이에 넘겨주면 될것 같다~
'알고리즘 > 백준' 카테고리의 다른 글
[백준] 카드 구매하기2 16194번 C++ 풀이 (0) | 2021.12.23 |
---|---|
[백준] 1로 만들기2 12852번 C++ 풀이 (0) | 2021.12.22 |
[백준] 그림 1926번 C++ 풀이 (0) | 2021.12.21 |
[백준] 다리 만들기2 17472번 C++ 풀이 (0) | 2021.12.19 |
[백준] 마인크래프트 18111번 C++ 풀이 (1) | 2021.12.18 |
Comments