알고리즘/종만북(4)
-
알고스팟 DICTIONARY 고대어 사전
먼저 그래프의 표현을 어떻게 해야할 지 정해야 한다. 정점의 갯수가 26(알파벳개수)^2 = 676, 간선의 갯수가 최대 1000000개까지 나올 수 있으므로 인접행렬, 인접리스트 모두 좋지만 인접행렬로 표현하는 것이 더 나을 수 있다 순서가 정해진 위상정렬 문제로, 반드시 사이클 검사와 마지막에 indegree 검사는 필수가 된다 문제: https://algospot.com/judge/problem/read/DICTIONARY 깃허브주소: https://github.com/surinoel/boj/blob/master/DICTIONARY.cpp
2019.08.27 -
알고스팟 요새 FORTRESS
두 원은 만나지 않으면서 겹치치 않는다는 조건이 있다 결국 1. 두 원은 서로 떨어져 있거나 2. 하나의 원이 다른 하나의 원 안에 있거나 둘 중에 하나다 원들이 모두 계층적 구조를 가지고 있기 때문에, 트리로 구성할 수 있다. 이전에 서로 원들을 모두 비교하면서 자신의 부모를 찾는다. 조건을 만족하면서 반지름이 작은 부모인 바로 부모노드만을 저장한다. 그 정보를 가지고 트리를 구성하게 된다 그리고 최장 거리는 리프노드와 리프노드 혹은 리프노드와 루트와의 거리이므로 bfs를 돌려서 그 거리를 구할 수 있게 된다 문제: https://algospot.com/judge/problem/read/FORTRESS 깃허브주소: https://github.com/surinoel/boj/blob/master/FORTR..
2019.07.09 -
트리 순회 순서 변경 TRAVERSAL
두 가지 순회방법이 나와있을 때, 나머지 순회방법을 구하는 문제다 이 문제는 preorder와 inorder가 주어졌을 때 나머지 postorder를 구하는 문제다 먼저 postorder의 순회경로는 왼쪽 자식, 오른쪽 자식, 루트가 되므로 경로를 구한 뒤 다음의 순서대로 출력을 해야한다 가장 중요한 것이 루트와 왼쪽과 오른쪽 자식의 경계를 구해야한다 루트는 preorder의 첫번째 원소가 된다. 왼쪽 자식은 inorder에서 루트가 나오기 전까지의 부분이고, 오른쪽 자식은 자연스럽게 루트 이후부터 마지막까지가 된다. 따라서 나눈 부분에 대해서 매개변수로 preorder과 inorder를 넣어서 재귀를 도리면 결국엔 하나만 남았을 때 그것을 출력하면 된다 문제: https://algospot.com/ju..
2019.07.03 -
Baekjoon Online Judge
bfs문제 문제: https://algospot.com/judge/problem/read/BOJ https://github.com/surinoel/boj/blob/master/BOJ.cpp
2019.07.01