굥뷰를 햡시댜
안녕하세요 저번 그래프에서 기본적인 탐색방법 중 하나인 BFS에 대해 학습해보려고 합니다. 학습하기 전에 앞서 제가 저는 처음 BFS를 공부할 때 겪었던 어려움에 대해 말하고자 합니다. 저는 처음에 'BFS가 모든 노드를 방문한다는건 알겠는데 코드를 못짜겠네'라고 생각했던 적이 있습니다. 처음 공부하시는 분이시라면 저와 같은 고민을 하시는 분들이 많을 거라고 생각합니다. 그래서 저같은 경우는 BFS를 공부할 때 의사코드를 통째로 외우고 상황에 맞게 코드를 조금씩 수정하는 방식으로 공부했습니다. 개념을 알고 코드를 작성하면서 공부하다보니 BFS가 어떤 방식으로 돌아가는지(?)에 대해 저절로 알게되었습니다. 그렇기 때문에 만약, 코드 작성이 쉽지 않으시다면 의사코드를 먼저 숙지하시고 코드를 짜는 연습을 하시..
- 그래프란 무엇일까요? 그래프라고 하면 '정점(노드)'와 '간선(엣지)'로 이루어진 자료 구조를 말하는데요, 그래프는 간선의 방향 유무에 따라서 단방향 그래프, 양방향 그래프로 나뉩니다. 왼쪽 이미지와 같이 간선이 방향을 나타내면 단방향 그래프, 오른쪽 이미지와 같이 간선이 방향을 나타내지 않으면 양방향 그래프 입니다.(양방향 그래프는 무방향 그래프라고도 합니다.) - 그래프의 표현 방식 그래프를 표현하는 방식으로는 3가지 방식이 있습니다. 1. 간선 리스트(Edge List) (1) 정점의 개수가 V개, 간선의 개수가 E개인 그래프에 대해 '간선 정보'를 저장합니다. -> ex) 어떤 두 정점 i,j를 연결하는 간선 (i,j)를 간선 리스트 배열 A에 저장했을 경우 A[k][0] = i, A[k][1..
하루 공부한 것 리마인드겸 티스토리를 시작하게 되었습니다. 저는 알고리즘 문제 풀이용 언어로 C/C++을 선택했습니다. 컴퓨터 공학을 전공하면서 가장 처음 접했던 프로그래밍 언어이기도 하고 가장 자신있으며 친숙하다고 생각했기 때문입니다.(다른 언어들도 다룰 수 있지만 그것들은 추후에 따로 시간이 된다면 다시 공부하고 올리도록 하겠습니다...) 또, C++에는 STL이라는 아주 잘 만들어진 라이브러리가 있어서 초보자도 조금만 공부한다면 문제 풀이에 유용하게 사용할 수 있습니다. 처음 알고리즘 문제 풀이에 어떤 언어를 선택해야할지 고민이신 분들은 저처럼 자신이 익숙하거나, 아니면 혼자 스터디할 때 자료가 많은 C++을 사용하시는 것을 추천합니다! 알고리즘 문제 풀이에 대한 글을 포스트 하기전에 앞서, 간단하..