728x90

알고리즘 45

24.10.02 UE5, 알고리즘

UE5언리얼 엔진의 기본타입boolboolean 값(bool 크기 추정 금지). BOOL은 컴파일되지 않는다.TCHARcharacter(TCHAR 크기 추정 금지)uint8unsigned byte(1 바이트)int8signed byte(1 바이트)uint16unsigned “short”(2 바이트)int16signed “short”(2 바이트)uint32unsigned int(4 바이트)int32signed int(4 바이트)uint64unsigned “quad word”(8 바이트)int64signed “quad word”(8 바이트)floatsingle precision floating point(4 바이트)doubledouble precision floating point(8 바이트)PTRINT포인..

비트마스크(BitMask)

비트마스크(BitMask)집합의 요소들의 구성 여부를 표현할 때 유용한 테크닉이다.사용 이유DP나 순열 등, 배열 활용만으로 해결할 수 없는 문제를 해결하기 위해서.작은 메모리와 빠른 수행시간으로 해결이 가능하다.원소의 수가 많지 않아야 한다.집합을 배열의 인덱스로 표현할 수 있다.코드가 간결해진다.비트(Bit)란?컴퓨터에서 사용되는 데이터의 최소 단위비트 연산AND(&) : 대응하는 두 비트가 모두 1일 때, 1을 반환한다.OR(|) : 대응하는 두 비트 중 모두 1이거나 하나라도 1일 때, 1을 반환한다.XOR(^) : 대응하는 두 비트가 서로 다를 때, 1을 반환한다.NOT(~) : 비트 값을 반전하여 반환한다.SHIFT(>>,1. 삽입삽입의 경우 OR 연산을 활용한다.2. 삭제삭제의 경우 AND ..

24.06.25 알고리즘, CS

알고리즘다익스트라(Dijkstra)DP를 활용한 최단 경로 탐색 알고리즘다익스트라 알고리즘은 특정한 정점에서 다른 모든 정점으로 가는 최단 경로를 기록한다. DP가 적용되는 이유는, 한 번 최단 거리를 구한 곳은 다시 구할 필요가 없기 때문이다. 이를 활용해 정점에서 정점까지 간선을 따라 이동할 때 최단 거리를 효율적으로 구할 수 있다.다익스트라를 구현하기 위해 두 가지를 저장해야 한다.해당 정점까지의 최단 거리를 저장한다.정점을 방문했는 지 저장한다.시작 정점으로부터 정점들의 최단 거리를 저장하는 배열과, 방문 여부를 저장하는 것이다.과정최단 거리 값은 무한대 값으로 초기화한다.시작 정점의 최단 거리는 0이다. 그리고 시작 정점을 방문 처리한다.시작 정점과 연결된 정점들의 최단 거리 값을 갱신한다.방문..

24.06.24 알고리즘

알고리즘DFS루트 노드 혹은 임의 노드에서 다음 브랜치로 넘어가기 전에, 해당 브랜치를 모두 탐색하는 방법스택 or 재귀함수를 통해 구현한다.모든경로를 방문해야 할 경우 사용에 적합하다.시간복잡도인접 행렬 : O(V^2)인접 리스트 : O(V+E)V(Vertex) : 정점, E(Edge) : 간선BFS루트 노드 또는 임의 노드에서 인접한 노드부터 먼저 탐색하는 방법큐를 통해 구현한다.최소 비용(즉, 모든 곳을 탐색하는 것보다 최소 비용이 우선일 때)에 적합하다.시간복잡도인접 행렬 : O(V^2)인접 리스트 : O(V+E)동적 계획법(Dynamic Programming)복잡한 문제를 간단한 여러 개의 문제로 나누어 푸는 방법이다.한 가지 문제에 대해서, 단 한 번만 풀도록 만들어주는 알고리즘이다.똑같은 연..

힙 정렬(Heap Sort)

힙 정렬(Heap Sort)완전 이진 트리를 기본으로 하는 힙(Heap) 자료구조를 기반으로한 정렬 방식이다.불안정 정렬에 속한다.완전 이진 트리각 노드가 최대 2개의 자식 노드를 갖는 트리 형태의 자료구조이다.마지막 레벨을 제외한 모든 노드는 완전히 채워져 있어야 한다.과정최대 힙을 구성한다.현재 힙 루트는 가장 큰 값이 존재한다. 루트의 값을 마지막 요소와 바꾼 후, 힙의 사이즈 하나를 줄인다.힙의 사이즈가 1보다 크면 위 과정을 반복한다.유용한 경우가장 크거나 가장 작은 값을 구할 때최대 k만큼 떨어진 요소들을 정렬할

24.06.23 알고리즘

알고리즘힙 정렬(Heap Sort)완전 이진 트리를 기본으로 하는 힙(Heap) 자료구조를 기반으로한 정렬 방식이다.불안정 정렬에 속한다.완전 이진 트리각 노드가 최대 2개의 자식 노드를 갖는 트리 형태의 자료구조이다.마지막 레벨을 제외한 모든 노드는 완전히 채워져 있어야 한다.과정최대 힙을 구성한다.현재 힙 루트는 가장 큰 값이 존재한다. 루트의 값을 마지막 요소와 바꾼 후, 힙의 사이즈 하나를 줄인다.힙의 사이즈가 1보다 크면 위 과정을 반복한다.유용한 경우가장 크거나 가장 작은 값을 구할 때최대 k만큼 떨어진 요소들을 정렬할이분 탐색(Binary Search)탐색 범위를 두 부분으로 분할하면서 찾는 방식과정우선 정렬을 해야한다.left와 right로 mid 값을 설정한다.mid와 내가 구하고자 하는..

병합 정렬(Merge Sort)

병합 정렬(Merge Sort)합병 정렬이라고도 부르며, 분할 정복 방법을 통해 구현된다.빠른 정렬로 분류되며, 퀵소트와 함께 많이 언급되는 정렬 방식이다.퀵소트와는 반대로 안정 정렬에 속한다.요소는 분리하고 다시 합병시키면서 정렬해나가는 방식으로, 분리하는 방식은 퀵정렬과 유사하다.Quick Sort : 피벗을 통해 정렬 → 분리Merge Sort : 분리되지 않을 때 까지 분리 → 정렬Merge Sort는 순차적인 비교로 정렬을 진행하므로, LinkedList의 정렬이 필요할 때 사용하면 효율적이다.시간복잡도O(nlogn)공간복잡도병합 정렬이 입력 배열에서 분할 및 정복 방식으로 작동하고 정렬된 후 하위 배열이 다시 병합되기 때문에 공간복잡도는 O(n)이다.장점병합 정렬은 동일한 값을 가진 요소의 상..

퀵 정렬(Quick Sort)

퀵 정렬(Quick Sort)분할 정복(divide and conquer) 방법을 통해 주어진 배열을 정렬한다.분할 정복문제를 작은 2개의 문제로 분리하고 각각을 해결한 다음, 결과를 모아서 원래의 문제를 해결하는 전략이다.Quick Sort은 불안정 정렬에 속하며, 다른 원소와의 비교만으로 정렬을 수행하는 비교 정렬에 속한다. 또한 Merge Sort는 배열을 비균등하게 분할한다.과정배열 가운데서 하나의 원소를 고른다. 이렇게 고른 원소를 피벗(pivot)이라고 한다.피벗 앞에는 피벗보다 값이 작은 모든 원소들이 오고, 피벗 뒤에는 피벗보다 값이 큰 모든 원소들이 오도록 피벗을 기준으로 배열을 둘로 나눈다. 이렇게 배열을 둘로 나누는 것을 분할(Divide) 이라고 한다. 분할을 마친 뒤에 피벗은 더 ..

24.06.22 알고리즘

알고리즘퀵 정렬(Quick Sort)분할 정복(divide and conquer) 방법을 통해 주어진 배열을 정렬한다.분할 정복문제를 작은 2개의 문제로 분리하고 각각을 해결한 다음, 결과를 모아서 원래의 문제를 해결하는 전략이다.Quick Sort은 불안정 정렬에 속하며, 다른 원소와의 비교만으로 정렬을 수행하는 비교 정렬에 속한다. 또한 Merge Sort는 배열을 비균등하게 분할한다.과정배열 가운데서 하나의 원소를 고른다. 이렇게 고른 원소를 피벗(pivot)이라고 한다.피벗 앞에는 피벗보다 값이 작은 모든 원소들이 오고, 피벗 뒤에는 피벗보다 값이 큰 모든 원소들이 오도록 피벗을 기준으로 배열을 둘로 나눈다. 이렇게 배열을 둘로 나누는 것을 분할(Divide) 이라고 한다. 분할을 마친 뒤에 피벗..

728x90