반응형
https://www.acmicpc.net/problem/2210
#include <iostream>
#include <set>
using namespace std;
set<string> st;
char map[5][5];
int dx[] = { -1,1,0,0 };
int dy[] = { 0,0,-1,1 };
string temp = "";
void dfs(int x, int y, int d) {
if (d == 6) {
st.insert(temp);
return;
}
temp.push_back(map[x][y]);
for (int i = 0; i < 4; i++) {
int nx = x + dx[i];
int ny = y + dy[i];
if (nx < 0 || ny < 0 || nx >= 5 || ny >= 5) continue;
dfs(nx, ny, d + 1);
}
temp.pop_back();
}
int main() {
for (int i = 0; i < 5; i++)
for (int j = 0; j < 5; j++) scanf(" %c", &map[i][j]);
for (int i = 0; i < 5; i++)
for (int j = 0; j < 5; j++) dfs(i, j, 0);
printf("%d", st.size());
}
반응형
'Algorithm' 카테고리의 다른 글
프로그래머스 : 셔틀버스 (0) | 2021.11.14 |
---|---|
프로그래머스 : 올바른 괄호 (0) | 2021.11.14 |
백준 14003 : 가장 긴 증가하는 부분 수열 5 (0) | 2021.11.14 |
백준 12738 : 가장 긴 증가하는 부분 수열 3 (0) | 2021.11.14 |
백준 12015 : 가장 긴 증가하는 부분 수열 2 (0) | 2021.11.14 |