일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
- 구현
- 그래프
- 다이나믹 프로그래밍
- ue5
- 알고리즘
- 정렬
- 누적 합
- 백준
- 수학
- 투 포인터
- 백트래킹
- DFS
- 브루트포스
- c++
- 재귀
- VR
- 우선순위 큐
- 문자열
- 자료구조
- 트리
- 시뮬레이션
- 스택
- 다익스트라
- Team Fortress 2
- XR Interaction Toolkit
- 유니온 파인드
- Unreal Engine 5
- 그리디 알고리즘
- 유니티
- BFS
- Today
- Total
목록DFS (40)
1일1알

A가 B를 신뢰하는 경우에 B를 해킹하면 A를 해킹할 수 있기 때문에 A와 B를 입력받았을 때 B->A 로 연결되어있다고 저장한 뒤 bfs로 탐색하여 문제를 해결하였다. #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; typedef long long ll; int n, m; vector trust(10001, vector()); int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); cin >> n >> m; int a, b;..

bfs/dfs 방식으로 탐색하면서 가장 큰 뭉쳐있는 쓰레기를 찾는 문제이다. 대각선으로는 못가고, 상하좌우로만 탐색하면 된다. #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; typedef long long ll; int n, m, k; int max_trash = 0; vector trash(100, vector(100, false)); int posR[4] = { -1,0,1,0 }; int posC[4] = { 0,1,0,-1 }; void bfs() { queue q; for (int i = 0; i ..

dfs방식을 이용해서 탐색하면서 A에 있는 물의 양이 0일 때 C에있는 물의 양을 저장해가면서 문제를 해결하였다. 탐색을 이미 했는지 확인하는 visited 은 A, B, C 중 2개만 검사하면 나머지는 값이 고정되기 때문에 visited 배열을 2차원 배열로 사용하였다. #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; typedef long long ll; int visited[201][201] = { false }; int A, B, C; set ans; void solve(int a, int b, int..

리프 노드에 있는 말을 한 칸씩 올려서 루트 노드에 말이 도착하면 말이 사라지고, 모든 말이 사라짐과 동시에 차례가 끝난 사람이 이기는 게임이다. 생각을 조금 해보면 자기 차례때 어느 말을 선택하든 결과는 달라지지 않고, 단지 먼저 누가 시작했는지에 따라 승패가 정해지는 홀짝 게임 같은 게임이다. 결국 루트 노드에서 리프 노드까지의 모든 높이의 합에 따라 승패가 결정된다. dfs를 통해서 루트 노드에서 모든 리프 노드까지의 합을 구하고, 그 합이 홀수라면 성원이의 승리고, 짝수라면 성원이의 패배이다. 리프 노드와 연결된 노드는 무조건 하나이기 때문에 노드와 연결된 노드가 1개이고, 그 노드가 1이 아닐 때 (1은 루트노드라고 문제에 적혀있음) 를 dfs의 종료 조건으로 설정하였다. #include #in..

대각선까지 고려하는 bfs, dfs 탐색 문제이다. #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; typedef long long ll; int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); int m, n; cin >> m >> n; int posR[8] = { -1,-1,0,1,1,1,0,-1 }; int posC[8] = { 0,1,1,1,0,-1,-1,-1 }; vector v(m, vector(n)); for (i..

단순한 그래프 탐색 문제이다. 가로 세로로 이어진 그림의 개수와 그림 중에서 넓이가 가장 큰 값을 구하면 된다. bfs와 dfs 모두 사용할 수 있다. 나는 bfs방식을 이용해서 해결하였다. #include #include #include #include #include #include #include #include #include #include #include using namespace std; typedef long long ll; void Input(vector& v, int n, int m) { for (int i = 0; i > v[i][j]; } } } pair bfs(vector& v, int n, in..