728x90
반응형
https://www.youtube.com/watch?v=7C9RgOcvkvo&list=PLRx0vPvlEmdAghTr5mXQxGpHjWqSz0dgC&index=3
스택 자료구조 설명(선입후출)
스택 동작 예시
스택 구현 예제
stack<int> s; // 선언
s.push(x);
s.pop();
큐 자료구조(선입선출)
큐 구현 예제
queue<int> q; //큐 선언
q.push(x);
q.pop();
재귀함수 설명
재귀 함수의 종료 조건
DFS(Depth-First Search) 깊이 우선 탐색
- 그래프에서 깊은 부분을 우선적으로 탐색
- 스택 자료구조 혹은 재귀 함수 사용
#include <bits/stdc++.h>
using namespace std;
bool visited[9];
vector<int> graph[9];
void dfs(int x){
visited[x] = true;
cout << x << ' ';
for(int i=0; i<graph[x].size(); i++){
int y = graph[x][i];
if(!visited[y]) dfs(y);
}
}
int main(void) {
/*그래프*/
dfs(1);
return 0;
}
BFS(Breadth-First Search) 너비 우선 탐색
- 그래프에서 가까운 노드부터 우선적으로 탐색
- 큐 자료구조 이용
#include <bits/stdc++.h>
using namespace std;
bool visited[9];
vector<int> graph[9];
void bfs(int start){
queue<int> q;
q.push(start);
visited[start] = true;
while(!q.empty()){
int x = q.front();
q.pop();
cout << x << ' ';
for(int i=0; i<graph[x].size(); i++){
int y = graph[x][i];
if(!visited[y]){
q.push(y);
visited[y] = true;
}
}
}
}
int main(void) {
/*그래프*/
bfs(1);
return 0;
}
728x90
반응형
'알고리즘' 카테고리의 다른 글
[이코테/ DFS&BFS/ C++] 미로탈출 (0) | 2022.12.28 |
---|---|
[이코테/ DFS&BFS/ C++] 음료수 얼려 먹기 (0) | 2022.12.28 |
[백준/DP/C++] 11052번 카드 구매하기 (0) | 2022.12.28 |
[백준/DP/C++] 11053번 가장 긴 증가하는 부분 수열 (0) | 2022.12.28 |
[백준/DP/C++] 9465번 스티커 (0) | 2022.12.27 |