[알고리즘] 계수 정렬
·
알고리즘/풀이 힌트
선택 정렬, 버블 정렬, 삽입 정렬, 퀵 정렬, 병합 정렬, 힙 정렬 중 가장 빠른 알고리즘은 당연히 퀵 정렬, 병합 정렬, 힙 정렬 중 하나일 것이다. ​ 하지만 '범위 조건' 이 있는 경우에 한해서 굉장히 빠른 알고리즘이 있다. 그것은 바로 계수 정렬이다. ​ 계수 정렬 : 단순하게 ' 크기를 기준으로 ' 세는 알고리즘 ​ 1 3 2 4 3 2 5 3 1 2 3 4 4 3 5 1 2 3 5 2 3 1 4 3 5 1 2 1 1 1 즉 5이하의 자연수 데이터들을 오름차순으로 정렬할 때 ​ 크기를 기준으로 정렬하기 때문에 크기 : 1 = 0 크기 : 2 = 0 크기 : 3 = 0 크기 : 4 = 0 크기 : 5 = 0 ​ 여기에서 1 3 2 4 3 2 5 3 1 2 3 4 4 3 5 1 2 3 5 2 3 ..
[알고리즘] 힙 정렬
·
알고리즘/풀이 힌트
힙 정렬 : 힙 트리 구조 ( Heap Tree Structure)를 이용하는 정렬 방법 -> 병합 정렬 (Merge Sort) , 퀵 정렬 (Quick Sort) 만큼 빠른 정렬 알고리즘이다. ​ 힙(Heap)이 무엇인지 알기 전에 이진 트리(Binary Tree)에 대해서 알아보자면 이진트리 : 컴퓨터 안에서 데이터를 표현할 때 데이터를 각 노드에 담은 뒤 노드를 두 개씩 이어 붙이는 구조 여기서 각 노드는 자식 노드가 2개 이하인 노드여야 합니다. 1 : Root(루트) 라고 하며 3, 4, 5 : Leaf(리프)하고 한다. -> 이진트리의 종류도 많이 있는데 우선 완전 이진 트리를 알아보자면 데이터가 Root(루트) 노드 부터 시작해 자식 노드가 왼쪽 자식 노드, 오른쪽 자식 노드​​ 순으로 차근..
[알고리즘] C++ STL sort() 함수_Vector/Pair
·
알고리즘/풀이 힌트
클래스(Class)를 정의해서 여러 개의 변수가 존재하는 상황에서 '특정한 변수' 를 기준으로 정렬하는 방법은 실무에서는 적합한 방법이지만 프로그래밍 속도 측면에서는 유리하지 않다. ​ 일반적으로 프로그래밍 대회같은 빠른 개발이 필요할 때는 페어(Pair) 라이브러리를 사용하는 것이 효율적이다. #include #include #include #include // vector가 정의되어 있는 헤더 using namespace std; int main(void) { vector v; // pair : 한 쌍의 배열(int, string)을 묶어음 v.push_back(pair(90, "잉여인간 1호")); // 배열의 마지막 부분에 삽입을 나타내는 push.back v.push_back(pair(85, "..
[알고리즘] C++ STL sort() 함수_class
·
알고리즘/풀이 힌트
sort() 함수 사용하는 방법 #include #include // STL 라이브러리 -> sort() 함수가 정의되어있음 using namespace std; bool compare(int a, int b) { // 비교 함수 return a > b; // 정렬 기준 : 내림차순 정렬 } int main(void) { int a[10] = { 9, 3, 5, 4, 1, 10, 8, 6, 7, 2 }; sort(a, a + 10); // a -> 메모리 주소, a + 10 -> 정렬할 마지막 주소가 있는 메모리 주소 sort(a, a + 10, compare); // 추가로 함수를 넣어주면 원하는 정렬 기준으로 정렬을 할 수 있다. //=> 9 ~ 2 까지의 주소를 정렬한다는 사실을 나타냄 for (i..
[알고리즘] 백준 2751번 문제_1000만개 정렬
·
알고리즘
1000만개 정렬 : https://www.acmicpc.net/problem/2751 ================================== 풀이 ==================================== ​ 퀵 정렬 : 하나의 큰 문제를 두 개의 작은 문제로 분할하는 식으로 빠르게 정렬 int data[1000000]; void quickSort(int *data, int start, int end) { if (start >= end) { return; } int key = start, st = start + 1, ed = end, tmp; while (st = data[st] && st ed) { tmp = data[key]; data[key] = data[ed]; data[ed] =..
[알고리즘] 백준 2752번 문제_세수 정렬
·
알고리즘
세수 정렬 : https://www.acmicpc.net/problem/2752 ​ ================================== 풀이 ==================================== ​ 선택 정렬 : 가장 작은 값을 앞으로 이동 ( 연산횟수 : 6 번 ) int main(void) { int data[3]; int index, min, tmp; scanf("%d %d %d", &data[0], &data[1], &data[2]); for (int i = 0; i data[j]) { min = data[j]; index = j; } } tmp = dat..
[알고리즘] 백준 2750번 문제_단순 정렬
·
알고리즘
단순 정렬 : https://www.acmicpc.net/problem/2750 ================================== 풀이 ==================================== ​ 선택 정렬 : 가장 작은 값은 선택하여 앞으로 보내는 정렬 int main(void) { // 2750번 선택 정렬 int tmp, num,min, index; int data[1000]; scanf("%d", &num); for (int i = 0; i data[j]) { m..
[꿀팁] 네이버에 티스토리 등록하기
·
꿀팁 공유
나의 티스토리가 네이버에 좀더 잘 나오게하는 방법이 있다! 바로 네이버 웹 마스터 도구를 등록하는 것이다. 바로 하는 방법을 알아보자! 0. 준비물 필요한 준비물로는 네이버 계정이 필요하다! 1. 네이버 웹마스터 도구 이동 네이버에 " 네이버 웹마스터 도구 " 라고 검색하면 제일 상단에 네이버 서치어드바이저가 나온다. 이게 바로 우리에게 필요한 사이트이다! => 검색하기 귀찮으실테니 링크 네이버 서치어드바이저 네이버 서치어드바이저와 함께 당신의 웹사이트를 성장시켜보세요 searchadvisor.naver.com 2. 사이트 등록 웹마스터 도구라는 버튼을 클릭해서 페이지를 이동하자! 사이트 등록이라는 화면이 나올텐데, 여기서 " 이곳에 URL을 입력 ... 모시껭이 " 부분에 우리의 티스토리 주소창을 복사..