본문 바로가기
반응형

알고리즘33

[프로그래머스 - DP] N으로 표현 📄 [DP] N으로 표현 C++ Source Code #include #include #include using namespace std; #define MAX_V 8 int solution(int N, int number) { int answer = EOF; int base = 0; // MARK: - 최솟값이 8보다 크면 -1을 return 합니다. unordered_set numbers[MAX_V]; // MARK: - 주어진 N을 최대 8번을 사용하여 만든다. for (int ii = 0; ii < MAX_V; ii++) { base = 10 * base + 1; numbers[ii].insert(base * N); } for (int ii = 1; ii < MAX_V; ii++) { for (i.. 2019. 4. 25.
[프로그래머스 - 탐욕법] 가장 큰 수 📄 [탐욕법] 가장 큰 수 C++ Source Code #include #include #include using namespace std; #define MAX_V 10 #define STRING_VECTOR vector #define TO_INDEX(X) X - '0' /* ※ CAPTION ※ 자릿수가 다른 숫자가 주어질 경우에는 (6, 10) 이면 6 + 10 = 610 / 10 + 6 = 106 의 값으로 비교한다. (A + B 106의 값을 비교한다. */ const bool compare(const string & first, const string & second) { return firs.. 2019. 4. 21.
[프로그래머스 - 탐욕법] 큰 수 만들기 📄 [탐욕법] 큰 수 만들기 C++ Source Code #include #include #include using namespace std; string solution(string number, int k) { vector bucket; vector removeAt; // MARK: - 주어진 숫자로부터 하나씩 꺼내어 모으면서, 이때 모아둔 것 중 지금 등장한 것보다 작은 것들을 빼낸다. for (const auto letter : number) { // MARK: - 현재 조합하고자 하는 배열이 비어있는 경우 if (bucket.empty()) { bucket.push_back(letter); continue; } // MARK: - 현재의 숫자들이 추가 될 숫자보다 작은 경우에는 제거한다. whi.. 2019. 4. 21.
[정렬] 퀵 정렬 (Quick Sort) [정렬] 퀵 정렬 (Quick Sort) 퀵 정렬(quick sort)은 기준 키를 기준으로 작거나 같은 값을 지닌 데이터는 앞으로, 큰 값을 지닌 데이터는 뒤로 가도록 하여 작은 값을 갖는 데이터와 큰 값을 갖는 데이터로 분리해가며 정렬하는 방법이다. 퀵 정렬은 n개의 데이터를 정렬할 때, 최악의 경우에는 O(n^2)번의 비교를 수행하고, 평균적으로 O(n log n)번의 비교를 수행한다. 퀵 정렬의 내부 루프는 대부분의 컴퓨터 아키텍처에서 효율적으로 작동하도록 설계되어 있고(그 이유는 메모리 참조가 지역화되어 있기 때문에 CPU 캐시의 히트율이 높아지기 때문이다.), 대부분의 실질적인 데이터를 정렬할 때 제곱 시간이 걸릴 확률이 거의 없도록 알고리즘을 설계하는 것이 가능하다. 때문에 일반적인 경우 퀵.. 2019. 4. 16.
반응형