본문 바로가기

DFS4

[백준] 18430번 무기 공학 (C++) https://www.acmicpc.net/problem/18430 이 문제에서는 N X M 크기의 직사각형이 주어졌을때 해당 4개의 크기의 부메랑을 직사각형에 대입하여 최대 점수를 얻는문제이다. 한번 부메랑을 만든 크기는 중복해서 겹칠 수 없으며 N과 M의 크기가 5로 작기 때문에 모든 경우의 수를 구해서 최댓값을 갱신하여 출력하면 되는 문제이다. 따라서 그래프 상에서의 모든 경우를 구하기 위해서 백트래킹 + dfs를 사용하여 구현하였다. 정답 코드#include using namespace std;typedef pair pii;typedef long long ll;#define endl "\n"#define MAX 1e9//int dx[] = {0, 1, -1, 0,1, -1, -1, 1};//i.. 2025. 7. 16.
[백준] 17090 미로 탈출하기 (C++) https://www.acmicpc.net/problem/17090 문제에서 N X M의 격자판이 주어지며 해당칸에 있는 문자에 따라 상하좌우 4방향으로 이동하여 격자 밖으로 탈출할 수 있는 여부를 구하는 문제이다. 먼저 N과 M의 범위가 최대 500이며 만약 모든 격자칸에서 한번씩 dfs를 수행하여 방문체크를 다시 초기화 하는 경우시간복잡도가 O((NM)^2)으로 1억이 가뿐하게 넘는다. 따라서 모든칸에서 dfs를 수행하되 이미 방문했던 격자칸에대해 미로를 탈출할 수 있는 여부를 기록하여 탐색하면O(NM)으로 탐색할 수 있다. 시간 초과 코드// baekjoon 1012#include #define endl "\n";using namespace std;typedef pair pii;typedef l.. 2025. 6. 30.
[백준] 13023번 ABCDE (C++) https://www.acmicpc.net/problem/13023 친구 관계를 타고타고 가서 4번 이어져 있는 경우 1을 출력하고 4번이어져 있지 않는 경우0을 출력하는 문제이다. 문제를 보고 dfs를 생각했고 바로 풀이를 해보았다. 틀린코드#include using namespace std;typedef pair pii;typedef long long ll;#define endl "\n"#define MAX 1e9struct coordinate { int x; int y;};int dx[] = {-1 ,1, 0, 0, -1, -1, 1, 1};int dy[] = {0, 0, -1, 1, -1, 1, -1, 1};int N, M;vector> v(2001);bool visited[200.. 2025. 6. 1.
[백준] 9997번 폰트 (C++) https://www.acmicpc.net/problem/9997  처음에 문제를 제대로 이해 못했다가 다른사람한테 물어봐서 문제가 이해가 됬던 문제이다. 결국 입력된 알파벳에 대한 조합을 모두 계산하여 만약 알파벳이 다 포함이 되었을 경우에 대한 조합의 개수를출력하는 문제이다.   dfs + 백트래킹 -> 시간초과#include using namespace std;typedef pair pii;typedef long long ll;#define endl "\n"int dx[] = {0,-1, 1, 0, 0, -1, -1, 1, 1};int dy[] = {0,0, 0, -1, 1, -1, 1, -1, 1};int N, result;int arr[26];bool visited[26];int status =.. 2025. 3. 30.