알고리즘 6

구름톤 챌린지 2주차 - 1

2023.08.21.(월) #include #include #include #include #include #include #include using namespace std; string getString(string & S, int a, int b); int main() { ios::sync_with_stdio(false); cout.tie(NULL); cin.tie(NULL); int N; string S; cin >> N >> S; vector strings; set checkDup; // 1. 일단 가능한 문자열들 만들어서 vector에 저장하기 // 언뜻보기엔 (getString에도 반복문이 있어서) O(N^3)이지만, `temp[j-i] = S[j];`가 실행되는 횟수는 대략 1+2+...+..

구름톤 챌린지 1주차 - 1

2023.08.14.(월) #include int main() { long double W=0, R=0; scanf("%Lf %Lf", &W, &R); printf("%d", (int) ( W*(1+(R/30)) ) ); return 0; } 일단 계산을 할 때는 정확하게 계산해야해서 실수형 type의 변수를 선언하여 사용했습니다. 출력할 때는 소숫점을 바리라고 하여 (int)로 casting 후 출력했습니다. 2023.08.15.(화) #include void calculate(int *T, int *M, int c[], int size_c) { int sum = 0; for (int i=0; i

[알고리즘-기초] Graph

Representation 1. Adjacency Matrix (인접 행렬) : 2차원 배열로 각 vertex간의 연결유무를 표현한다. undirected graph라면 symmetric 형태이다. : (단점) 공간이 낭비될 수 있고, "몇개의 edge가 있나?" 같은걸 해결하는데 최소 O(n^2)이 걸린다. 2. Adjacency List (인접 리스트) : 각 vertex를 array의 elements로 나타낸 후, 해당 vertex에 연결된 vertex들을 각 elements의 linked list로 연결한다. : undirected graph라면 두 vertex 모두에 각각 하나씩 만들어서 연결해야한다. : 쌩 1차원 배열로 나타낼 수도 있다. n+2e+1만큼 공간 필요. 0~i까지는 vertex..

알고리즘/기초 2022.09.16

Tree

Representation 자식 node 수에 제한이 없는 일반적인 tree : leftchid-right sbling의 linked node의 형태 (쓸일은 거의 없지싶긴함) Binary Tree : node 생성 후 linking 시켜서 표현하는게 일반적 BST도 여기 들어감. Complete Binary Tree : array로 표현하는게 저장공간측면도 그렇고 계산측면도 그렇고 훨씬 좋음 Heap도 여기 들어감. Binary Tree Operations 1. 순회(traversal) 2. 전체 복사 3. 전체 equality 확인 4. leaf node 연산(satisfiabiltiy problem) Binary Search Tree Operations 1. 검색 2. 삽입 3. 삭제 참고로 BST..

알고리즘/기초 2022.09.16