본문 바로가기

분류 전체보기

(22)
[Heap]Heap Sort 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 12..
[Heap]MaxHeap구성 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 #include #define NUM_DATA (8) #define MAX_DATA (NUM_DATA) #define MAX_HEAP (MAX_DATA+1) #define LAST_NODE (MAX_DATA) int heap[MAX_HEAP]; int lastnode = 0; int Heap_Push_Maxheap(int *heap, int size, int *lastnode, int d) {..
[HEAP] minheap 구성 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 #include #define NUM_DATA (8) #define MAX_DATA (NUM_DATA) #define MAX_HEAP (MAX_DATA+1) #define LAST_NODE (MAX_DATA) int heap[MAX_HEAP]; int lastnode = 0; int Heap_Push_Minheap(int *heap, int size, int *lastnode, int d) { i..
SegmentTree[구간의 최대값 구하기] 정수로 이뤄진 수열을 입력 받은 다음, 수열의 임의의 연속된 구간의 최대값을 구하는 프로그램을 작성한다. 수열의 원소는 번호가 매겨지는데, 맨 앞의 원소부터 1, 2, ... 순으로 숫자가 매겨진다. [입출력 예시] 입력 : 4 3 1 3 2 4 1 2 2 4 1 1 출력 : 3 4 1 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 #include #define maxx(a,b) ((a)>(b)?(a):(b)) #define NUM_DATA (50002) //5만 #define MAX_TREE (NUM_DATA*..
Visual Studio 편집 창 수직 분할 단축키 Alt+W+N 입력하고 Alt+W+V : 현재 커서가 있는 창이 한개 더 생기면서 창이 수직 분할되어 보여짐. Alt+W+V : 현재 커서에 위치한 모든 창들을 모두 수직분할해 보여짐.
[BOJ.16985번] Maaaaaaaaaze 문제 링크 : https://www.acmicpc.net/problem/16985 이 문제는 완전탐색과 bfs와 극한의 시뮬레이션이 포함된 문제이다..!! 처음에 문제를 봤을 때 극한의 문제다!! 하고 겁을 먹었지만 막상 구현을 해보니 그리 어렵지 않은 문제였다. 먼저, 5개 층의 순서를 섞어줄 때 #include에 있는 nextpermutation함수를 사용해 조합을 만들어주었다. 5개 층의 순서가 결정되면, 이제 시계방향으로 각층마다 돌려준다. 이때, 반시계방향은 고려할 필요가 없는게 어차피 시계방향으로 3번 돌리면 제자리로 오고 모든 경우를 본 것이기 때문이다. 시계방향으로 돌려주는 함수는 rotation함수로 main에서 5중포문으로 조합을 구현하였다....(선생님,,,설마 코드에 6중포문을 넣으..
BOJ 1485: 정사각형 각 점들에 대한 길이를 모두 s배열에 저장하면 정사각형 네변의 길이, 대각선 2개 총 6개의 길이를 저장합니다. 이를 오름차순으로 정렬하면 대각선 2개에 대한 길이는 자연스럽게 뒤에 위치하게 됩니다. 이제, 앞에 4개 길이가 같은지 판별하고, 뒤에 2개 대각선길이가 서로 같다면 정사각형이라는 의미이므로 True를 리턴해줍니다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 #include #include using namespace std; struct POINT { int x, y; }; POINT point[4]; int s[6]; int abss(int a) { return ..
BOJ 6439번: 교차 입력으로 주어진 선분과 직사각형이 교차하는지를 판별하는 문제이다. 직사각형의 좌표들가 대각선으로 2개 들어오는데, x, y좌표를 각각 크기 비교해서 사용해야하는데 당연히 작은게 우선 들어올거라 판단해 여러번 틀린 문제였다. 이 문제는 크게 2가지 기준을 통과하면 T로 판별하게 하였다. 먼저, 직사각형 점들을 저장해주고, CCW로 선분이 직사각형 4개의 변과 교차하는지 판별해주었다. 이후, 직사각형 4개의 각 변들과 선분과의 CCW >0 이면 선분이 직사각형 내부에 있다는 뜻이므로 이 또한 T로 판별하게 해주었다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 ..