일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 삼성역량테스트
- 삼성코테
- DP문제
- 컴퓨팅사고
- 다이나믹프로그래밍
- bfs문제
- 자료구조
- 코딩테스트
- tflite
- dfs문제
- MCU 딥러닝
- TensorFlow Lite
- 알고리즘
- 포스코 교육
- 코테 문제
- 삼성역테
- 그리디
- 초소형머신러닝
- 영상처리
- sort
- 포스코 ai 교육
- DP
- 삼성코딩테스트
- 딥러닝
- 코테
- 포스코 AI교육
- 임베디드 딥러닝
- BFS
- dfs
- tinyml
- Today
- Total
코딩뚠뚠
[기본문제풀이] BFS 너비우선탐색 본문
풀이 일시 : 2020-08-30
BFS :
탐색 - 하나의 정점으로부터 시작하여 차례대로 모든 정점들을 한번씩 방문하는 것. 그 중 한 방법인 너비우선탐색은 루트 노드에서 시작해서 인접한 노드를 먼저 탐색하는 방법이다. 시작정점으로부터 가까운 정점을 먼저 방문하고 멀리 떨어져있는 정점을 나중에 방문한다.
DFS와 비교하여 wide 하게 탐색하는 BFS는 queue를 이용하여 구현할 수 있다.
최단거리를 구할때 주로 이용된다.
문제 :
BFS를 queue로 구현하라.
풀이 :
인접 노드들을 queue에 담고 그 다음 노드는 큐에서 나오는 노드가 될 것이다. 그 노드의 인접노드를 다시 queue에 넣는 작업을 queue가 비기 전 까지 반복해준다.
#include <iostream>
#include <queue>
#include <vector>
#define MAX 101
using namespace std;
vector <int> a[MAX];
int d[MAX] = { 0, };
void bfs(int x) {
queue <int> q;
q.push(x);
d[x] = true;
while (!q.empty()) {
int y = q.front();
q.pop();
printf("%d", y);
for (int i = 0; i < a[y].size(); i++) {
int z = a[y][i];
if (!d[z]) {
q.push(z);
d[z] = true;
}
}
}
}
int main() {
a[1].push_back(2);
a[2].push_back(1);
a[1].push_back(3);
a[3].push_back(1);
a[1].push_back(8);
a[8].push_back(1);
a[2].push_back(7);
a[7].push_back(2);
a[7].push_back(6);
a[6].push_back(7);
a[7].push_back(8);
a[8].push_back(7);
a[3].push_back(4);
a[4].push_back(3);
a[3].push_back(5);
a[5].push_back(3);
a[4].push_back(5);
a[5].push_back(4);
bfs(1);
return 0;
}
추가자료 : [개념정리] 큐 (queue)
dbstndi6316.tistory.com/48?category=953968
[기본문제풀이] queue
풀이 일시 : 2020-08-05 큐 : first in first out dbstndi6316.tistory.com/27?category=953970 변수; queue q1; 사용 q1.push(element) //큐에 원소를 추가한다. (뒤에 추가하는것) q1.pop() //큐.." data-o..
dbstndi6316.tistory.com
dbstndi6316.tistory.com/27?category=953970
[개념정리] queue
queue란 자료구조의 한가지로 FIFO구조로 데이터를 저장하는 방식 queue의 사용 #include 선언 queue<자료형>변수; queue q1; 사용 q1.push(element) //큐에 원소를 추가한다. (뒤에 추가하는것) q1.pop() //큐..
dbstndi6316.tistory.com
'알고리즘 문제풀이 > 기본문제풀이' 카테고리의 다른 글
[기본문제풀이] 분할정복 (0) | 2020.12.29 |
---|---|
[기본문제풀이] DFS 깊이우선탐색 (0) | 2020.12.29 |
[기본문제풀이] greedy 알고리즘 (0) | 2020.12.29 |
[기본문제풀이] rabin karp 알고리즘 (0) | 2020.12.28 |
[기본문제풀이] KMP알고리즘 (0) | 2020.12.28 |