C++ 코딩 테스트 기본 지식
·
C++/코딩 테스트
1. 입력 크기(시간 복잡도 추정) 문제의 N(입력 크기) 를 보면 어떤 알고리즘을 써야 할지 감이 옵니다.입력 크기 추천 알고리즘/기법 시간 복잡도 예시 N ≤ 20완전 탐색(Brute Force), 백트래킹O(2^N), O(N!)N ≤ 1,000DP, Greedy, 정렬 기반O(N^2)N ≤ 100,000그래프 탐색, 고급 자료구조O(N log N), O(N)N ≤ 1,000,000매우 효율적 알고리즘 필요O(N), O(log N)그 이상수학적 공식, 특수 알고리즘O(1) ~2. 자료형 크기 감각 자료형 ..
코딩 테스트 알고리즘 유형 정리
·
C++
🔹 정렬(Sorting)알고리즘 시간 복잡도 특징 비고버블 정렬 (Bubble Sort)O(N²)인접한 원소 swap구현 쉬움, 비효율적선택 정렬 (Selection Sort)O(N²)최소/최대 선택 후 swap데이터 크기 작을 때삽입 정렬 (Insertion Sort)O(N²)앞 부분 정렬 유지하며 삽입거의 정렬된 경우 빠름퀵 정렬 (Quick Sort)평균: O(N log N)최악: O(N²)분할 정복Pivot 선택 중요병합 정렬 (Merge Sort)O(N log N)분할 정복, 안정 정렬추가 메모리 필요힙 ..
C++ new/delete와 Object Pool의 속도 차이
·
C++
56바이트의 Enemy Class를 기준으로 new/delete와 Object Pool을 비교한 코드입니다.오브젝트 생성 횟수는 1000만 개를 기준으로 했으며1. new/delete 생성 Object Pool 생성 속도 비교2. new/delete 해제 Object Pool 반환 속도 비교3. 오브젝트의 재사용을 위한 new/delete 재할당 Object Pool 재사용 속도 비교4. new/delete 해제 Object Pool 반환 속도 비교로 비교하였습니다. 테스트 결과, Object Pool의 재사용은 동적 할당 대비 약 3배 이상의 성능 향상을 보여주었습니다.이는 매번 힙 메모리를 요청하는 new/delete 방식이 가진 오버헤드를 피할 수 있기 때문입니다.단, Object Pool은 한 번..
트리 순회 (전위 순회, 중위 순회, 후위 순회)
·
C++/코딩 테스트
#include using namespace std;char tree[26][2]; // 각 노드의 왼쪽/오른쪽 자식 저장void preorder(char node) { if (node == '.') return; cout > N; for (int i = 0; i > parent >> left >> right; tree[parent - 'A'][0] = left; tree[parent - 'A'][1] = right; } preorder('A'); cout
C++ 삽입 정렬과 퀵 정렬 학습
·
C++
// quicksort.cpp#include #include #include #include #include #include // --------- 유틸리티: insertion sort (작은 구간 최적화) ----------templatevoid insertion_sort(std::vector& a, int l, int r) { for (int i = l + 1; i = l && a[j] > key) { a[j + 1] = std::move(a[j]); --j; } a[j + 1] = std::move(key); }}// --------- 유틸리티: median-of-three pivot index ----------templa..
알고리즘 속도 체크 C++
·
C++/코딩 테스트
#include // 시간을 위해 사용하는 헤더 파일int main(){ clock_t start; clock_t end; start = clock(); // 시작 시간을 받아옴 /** 알고리즘 실행 */ end = clock(); // 마무리 시간을 받아옴 cout((end-start)/CLOCKS_PER_SEC); // 시간을 출력 return 0;}