Study with book

    [백준]DFS와 BFS1

    백준저지 [DFS와 BFS]https://www.acmicpc.net/problem/1260 DFS와 BFS는 총 3번에 걸쳐서 포스팅을 하려고 한다. 이번 포스팅에서는 DFS에 대한 설명을 위주로 하려고 한다. 전체 소스는http://vvshinevv.tistory.com/12 를 참고하자. • 본문에 들어가기에 앞서 DFS와 BFS를 구현하기 위해서는 그래프 자료구조를 구현할 수 있어야 한다. • 필자는 그래프 표현 방법 인접 행렬과 인접리스트 중 인접리스트를 이용하였다. • 아래 예시는 백준저지에서 예시로 제공한 것을 사용한다. • DFS(Depth First Search) - 깊이 우선 탐색으로 한 방향으로 갈 수 있을 때까지 계속 가다가 더 이상 갈 수 없게 되면 다시 가장 가까운 갈림길로 돌아..

    [백준]광고

    백준저지 [광고]https://www.acmicpc.net/problem/1305 • kmp 알고리즘에 대한 정확한 이해가 되어야 풀 수 있는 문제이다. • kmp 알고리즘은 이전 포스팅에 자세히 설명을 해놨으니 참고 바란다! • 현재 보이는 문자열 길이에서 “접두사와 접미사가 같은 최대 길이를 빼면” 정답이다. #include #include using namespace std; int * getPi(string p) { int * pi = new int[(int)p.size()]; pi[0] = 0; int j = 0; for (int i = 1; i < (int)p.size(); i++) { while (p[i] != p[j]) { if (j == 0) { pi[i] = j; break; } j =..

    트리2

    [이진 트리]• 트리 중에서 가장 많이 쓰이는 트리이다.• 정의- (1) 공집합이거나- (2) 루트와 왼쪽 서브 트리, 오른쪽 서브 트리로 구성된 노드들의 유한 집합으로 정의된다. 이진 트리의 서브 트리들은 모두 이진트리여야 한다.• 정의에서 ‘이진 트리’의 개념이 재귀적으로 들어간다는 점에 유의하자! 이진트리의 서브 트리도 이진트리의 성질을 만족하여야 한다는 것! • 위 그림은 이진트리인지를 알아보자.• 먼저 SUB3을 보자. SUB3은 하나의 노드 D로만 이루어져 있다. 만약 노드 D를 SUB3의 루트라고 생각하면 D의 왼쪽, 오른쪽 서브트리는 공집합이다. 하지만 정의 (1)에 의해서 공집합도 이진트리이므로 정의 (2)에 의하여 SUB3은 루트와 공집합 서브트리 2개를 갖는 이진트리이다.• SUB1은..

    트리1

    [트리의 개념]• 리스트, 스택, 큐 등이 선형 자료구조라고 한다면 트리는 비선형(계층적) 자료구조이다.• 계층적 자료구조는 ‘회사 조직’, ‘의사 결정 트리’ 등의 형태를 표현한다.• 리스트, 스택, 큐 등이 데이터 삽입, 삭제, 조회 등에 초점을 맞춘 자료구조라고 한다면, 트리는 어떠한 형태를 표현하는데 초점을 맞춘 자료구조다.• 그렇다고 트리에서 삽입, 삭제, 조회가 중요하지 않다는 것이 아니다. 단순히 무언가를 표현하는 것에 최적화된 자료구조라는 뜻이다. [트리의 용어] • 노드: 트리의 구성 요소에 해당하는 A, B, C, D, E, F, G, H, I, J, K를 노드(node)라 한다.• 루트: 계층적인 구조에서 가장 높은 곳에 있는 노드인 A가 루트가 된다.• 서브 트리: 전체 노트 집합 ..

    KMP 알고리즘

    KMP알고리즘 백준저지 [찾기] https://www.acmicpc.net/problem/1786 본 문제를 해결하기 위해서는 KMP알고리즘에 대해 학습이 되어야한다. (참고로 전 이 알고리즘을 이해하는데 2주가 걸렸다는... T^T...) 먼저 이 알고리즘은 '찾기' 흔히 [CTRL] + [F]를 눌러 문자열 검색을 하는 기능에 필수적으로 들어가는 알고리즘이다. KMP는 Knuth, Morris, Prett의 사람 이름 앞자를 따서 만든 이름이다. 흔히 찾기 알고리즘을 구현하라고 하면 아래와 같은 방식으로 구현을 할 수 있을것이다. "ABCDEF"란 Text에서 "CD"란 Pattern을 찾는다고 한다면, 012345TextABCDEF 01 PatternCDText[0]과 Text[1]이 Pattern..