동빈나님의 알고리즘 강의를 참고했다.
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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 | #include<iostream> #include<queue> #include<vector> int number=7; int checked[7]; std::vector<int> vertex[8]; void bfs(int start) { std::queue<int> queue; queue.push(start); checked[start]=true; while(!queue.empty()) { int searched=queue.front(); queue.pop(); std::cout<<searched<<' '; for(int i=0; i<vertex[searched].size(); i++) //vertex와 연결된 정점들을 for문으로 순회한다. { if(!checked[vertex[searched][i]]) //만약 vertex와 연결된 정점이 체크되어있지 않으면 { queue.push(vertex[searched][i]); //해당 정점을 queue에 넣는다. checked[vertex[searched][i]]=true; //해당 정점을 체크한다. } } } } int main(void) { vertex[1].push_back(2); vertex[2].push_back(1); vertex[1].push_back(3); vertex[3].push_back(1); vertex[2].push_back(3); vertex[3].push_back(2); vertex[2].push_back(4); vertex[4].push_back(2); vertex[3].push_back(6); vertex[6].push_back(3); vertex[3].push_back(7); vertex[7].push_back(3); vertex[4].push_back(5); vertex[5].push_back(4); vertex[6].push_back(7); vertex[7].push_back(6); bfs(1); return 0; } | cs |
..
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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 | #include<iostream> #include<vector> int number = 7; int checked[8]; std::vector<int> versus[8]; void dfs(int x) { if (checked[x]) { return; } checked[x] = true; std::cout << x << ' '; for (int i = 0; i < versus[x].size(); i++) { dfs(versus[x][i]); } } int main() { versus[1].push_back(2); versus[2].push_back(1); versus[1].push_back(3); versus[3].push_back(1); versus[2].push_back(4); versus[4].push_back(2); versus[2].push_back(5); versus[5].push_back(2); versus[3].push_back(6); versus[6].push_back(3); versus[3].push_back(7); versus[7].push_back(3); versus[4].push_back(5); versus[5].push_back(4); versus[6].push_back(7); versus[7].push_back(6); dfs(1); return 0; } | cs |
사실 공부는 한참 전에 했던 것이었지만.. 강의를 듣고 도저히 코드를 이해를 할 엄두가 나지 않아, 코드로 실제로 옮기는 것은 오랫동안 미뤄두고 있었다.
물론 오늘 코드도 따라 친 것을 내 방식대로 조금 수정한 것에 불과하다곤 하지만.. 이해하면서 따라치며, 그래프 관련 문제도 드디어 풀기 시작할 수 있겠다는 용기(?)가 약간이나마 생겼다.
너무 의지박약인 것 같아 나 자신에게 미안해지는 오늘 밤이다.
그러나 이런 느린 한 발자국씩이라도 조금씩 걷다보면 나중에 시작하는 것보단 더 나을 것이다.
스스로에게 그런 위안을 하며 이번 포스팅을 마친다..