Computing Skills 4

[Algorithm] DFS/BFS stack과 queue를 이용한 완전탐색 알고리즘

안녕하세요. 오늘은 DFS와 BFS알고리즘에 대해서 알아 보겠습니다. DFS와 BFS는 그래프의 완전탐색 알고리즘입니다. 시간복잡도 두 알고리즘의 시간 복잡도에 대해서 먼저 설명드리겠습니다. 인접리스트형식으로 표현된 그래프와 인접행렬법으로 표현된 그래프에서의 시간복잡도는 다릅니다. 우선 인접행렬법(V by V 행렬 : V은 정점의 개수 입니다.)에서는 O(V^2)입니다. 각각의 노드에서 모든 노드로 간선이 있는지 여부를 알아야 하기 때문입니다. 두번째로 인접리스트형식(V: 정점의 개수, E: 간선의 개수)으로 표현된 그래프에서는 O(V+E)입니다. 각각의 노드에서 다른 노드로 간선이 리스트형식으로 존재함을 알기 때문에 V+E로 모두 탐색 가능합니다. 알고리즘 설명 DFS부터 알고리즘 설명 드리겠습니다. ..

[자료구조] Linked List 연결리스트(1) with C

안녕하세요! 오늘은 저번에 예고했던대로 Linked List에 대해서 포스팅합니다. Linked List(이하 LL)는 배열의 기능적 업그레이드 버젼이라고 할 수 있습니다! 우선 설명 전 배열의 장단점을 이야기 해봅시다! 1. 배열의 장점 배열은 접근 속도가 빠릅니다! 연속적인 데이터의 나열이기 때문이죠! 또, 배열은 구현이 굉장히 쉽습니다! 2. 배열의 단점 배열은 중간 삽입, 삭제가 매우 어렵습니다! 특히 맨앞의 배열은 삭제시 뒤의 데이터를 일일이 한칸씩 앞당겨줘야합니다! 또한, 크기를 바꾸기 힘듭니다! 왜냐면 배열은 연속된 데이터의 나열이기 때문에 미리 크기를 정하고 메모리에 저장 장소가 잡히기 때문입니다! 그래서 만약에 바꾸고 싶다면 메모리에 새로운 배열을 만들어 데이터를 옮겨줘야합니다! 이러한 ..

[자료구조] 배열

안녕하세요! 오늘은 배열에 대해서 알아볼텐데요! 후.. C는 배열과 포인터 그리고 메모리만 잘쓰면 정말 날라다닌다고 말할 수 있을거라고 생각하는 사람중 한명입니다! 아래 첨부된 예제코드를 보면서 같이 따라해보셔도 좋습니다! 배열은 허접한 위의 그림처럼 연속된 메모리 공간이라고 생각하시면 편할듯합니다! 그러므로 시작주소를 알고있다면 어디든 무려 O(1)에 접근 가능합니다! 굉장히 빠르죠? // array int intArray[11] = {0,}; // Random access is possible because the array data is stored sequentially // in the logical and physical memory. // access O(1) int i = 0, j = 0;..

[자료구조] 시작합니다!

안녕하세요! 앞으로 자료구조에 대해서도 포스팅 해볼 예정입니다! 자료구조는 고민을 좀 해봤는데요..! 흠 그래도 unmanagement language로 하는게 좋지 않을까하여! C/C++로 해볼 예정입니다! 흠 C에서는 이렇게 접근할 수 있는 것을 C++로는 이렇게 접근할 수 있구나 이런 느낌??? 클래스 유무 차이 아니면 C로 구현한 것을 간단하게 STL을 써서 쉽게 사용하는 법! 차이점 같은 것을 볼 예정입니다! 다음 포스팅에서는 배열부터 시작하는게 좋을듯합니다! C에서 다들 배열에 대해서는 많이들 접하셨으니 편하게 따라오실 수 있을것으로 예상됩니다! 다음에 뵙겠습니다!