728x90
반응형
https://www.acmicpc.net/problem/1189
1. Logic
기본 DFS문제.
간단하게 T를 피해서 DFS 돌려주고 이동 거리가 맞는것만 count해주면 된다.
2. Code
#include <bits/stdc++.h>
using namespace std;
int r, c, k;
int dx[4] = {-1, 0, 1, 0};
int dy[4] = {0, -1, 0, 1};
char graph[6][6];
bool vis[6][6];
int DFS(int yy, int xx, int cnt) {
if(yy == 0 && xx == c-1) {
if(cnt == k) {
return 1;
}
else return 0;
}
int ret = 0;
for(int i = 0; i < 4; i++) {
int nx = xx + dx[i];
int ny = yy + dy[i];
if(nx < 0 || ny < 0 || nx >= c || ny >= r) continue;
if(vis[ny][nx]) continue;
if(graph[ny][nx] == 'T') continue;
vis[ny][nx] = true;
ret += DFS(ny, nx, cnt+1);
vis[ny][nx] = false;
}
return ret;
}
int main() {
ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0);
cin >> r >> c >> k;
for(int i = 0; i < r; i++) {
for (int j = 0; j < c; j++) {
cin >> graph[i][j];
}
}
vis[r-1][0] = true;
cout << DFS(r-1, 0, 1);
}
알고리즘 Solve 후 제가 생각한 Logic을 기록하는 개인 공부 블로그입니다.
내용 중 최적화가 가능한 부분등은 언제든지 댓글로 틀린 부분 및 피드백 주시면 공부 및 반영하겠습니다🧐
728x90
반응형
'Algorithm > Beakjoon' 카테고리의 다른 글
[백준/Baekjoon] 1197 최소 스패닝 트리 C++ :: MST & Kruskal, Prim (0) | 2023.12.16 |
---|---|
[백준/Baekjoon] 2210 숫자판 점프 C++ :: Graph & DFS (0) | 2023.12.15 |
[백준/Baekjoon] 1326 폴짝폴짝 C++ :: Graph & BFS (0) | 2023.12.13 |
[백준/Baekjoon] 1525 퍼즐 C++ :: BFS & Set & Map (0) | 2023.12.12 |
[백준/Baekjoon] 4963 섬의 갯수 C++ :: BFS (0) | 2023.12.11 |