728x90

분류 전체보기 317

[sorting] Bubble sort

BUBBLE SORT 서로 인접한 두 원소를 검사하여 정렬하는 알고리즘 => 인접한 두 개의 원소를 비교하여 순서대로 되어있지 않을 경우 서로 교환한다. => array[3] 제외되는 데이터가 하나씩 늘어난다. #include #include using namespace std; int main(void) { int arr[10] = { 4,5,6,2,3,10,8,1,9,7 }; int temp; for (int i = 0; i arr[j + 1]) { temp = arr[j + 1]; arr[j ..

[CSES] Road Reparation

https://cses.fi/problemset/task/1675/ CSES - Road Reparation cses.fi 망할 알고리즘 응용 덕분에 크루스칼 제대로 머리에 기억 남을 듯 하다. 물론 얼마나 갈지는 모르겠지만. #include #include #include using namespace std; vector Edge; class UFDS { private: vector p, rank, setSizes; int numSets; public: UFDS(int N) { numSets = N; rank.assign(N, 0); p.assign(N, 0); for (int i = 0; i < N; i++) p[i] = i; setSizes.assign(N, 1); } int findSet(int ..

[Graph] 크루스칼 알고리즘 (Kruskal's algorithm)

최소 스패닝 트리(MST)를 만들기 위한 방법 중 하나. (+ 프림알고리즘) 1. 모든 간선들의 가중치를 오름차순으로 정렬한다. 2. 가중치가 가장 작은 간선을 선택한다. 3. 선택한 간선이 연결하려는 2개의 노드가 아직 서로 연결되지 않은 상태라면 2개의 노드를 서로 연결한다. 4. 반복. => 최소가중치를 가진 간선들을 사이클이 발생하지 않게 계속 연결하여 MST를 찾는다. 시간 복잡도 : O(mlog n) 구현 가장 작은 가중치를 갖는 간선이 연결하고자 하는 두 노드가 연결되어있는지 확인해주는 과정에서 많이 사용하는 방식이 Union-Find이다. 이전에 Union_Find를 다룬 적이 있는데 이를 이렇게 적용할 줄이야 하하핳. parent[] 코드 구현시에 대중적으로 많이 사용하는 방법은 pare..

[Graph] Graph Basics

Graph 그래프는 Vertex(정점)들의 집합 V(G)와 두 vertex를 이어주는 edge(간선)들의 집합 E(G)로 구성되어있는 구조 (G = V(G),E(G))로 표기한다. 방향성 그래프의 edge가 방향성이 있는지 없는지에 따라 Directed Graph, Undirected Graph로 나뉜다. Directed Graph : E(G)의 각 원소들은 ordered pair == 방향성이 있음. e=(a,b) != (b,a) : directed pair 는 방향성을 갖고 있기 때문에 vertex 순서도 중요하다. Undirected Graph : E(G)의 각 원소들은 unordered pair == 방향성이 없음. 인접하다 (v,u) 가 E(G)에 속해있을 때 adjacent(인접하다)라고 한다..

[Python | numpy] numpy.clip()

numpy.clip(arr,min,max) arr 내의 element들에 대하여 min값보다 작은 값들을 min 값으로 바꾸어 주고 max 값보다 큰 값들은 max 값으로 변경하여주는 함수 dst_x = np.clip(dst_x, 0 ,255).astype(np.uint8) dst_y = np.clip(dst_y, 0 ,255).astype(np.uint8) 영상처리의 sobel filter 실습에 있던 코드 dst 내에서 픽셀의 범위를 벗어나는 모든 픽셀들을 overflow 되지 않도록 막아준다.

[Python | numpy] numpy.dot()

numpy.dot() 은 numpy array를 곱할 때 사용한다. 1. 곱하는 두 행렬 A와 B가 1차원 행렬일 경우 각 자리수 끼리 곱해서 전부 더한다. ex) import numpy as np a = np.array([1,2,3]) b = np.array([2,3,4]) print(np.dot(a,b)) => 출력값 : 1*2 + 2*3 + 3*4 == 12 2. 곱하는 두 행렬 A, B가 2차원 행렬일 경우 일반적인 행렬 곱을 수행한다. import numpy as np def get_dot(): derivative = np.array([[-1, 0 , 1]]) blur = np.array([[1],[2],[1]]) x_dot = np.dot(blur, derivative) y_dot = np.d..

[C++] UVa-11572 Unique Snowflake

구현 코드 ) #include #include #include using namespace std; #define maxn (int)(le9)+1 int t, n, x, ans, cnt, block; map lastseen; int main() { cin >> t; // 테스트 케이스 개수 입력 while (t--) { cin >> n; // 정수 리스트의 길이 입력 lastseen.clear(); //테스트 케이스가 1개 이상 입력 될 경우 map을 초기화 하여 입력을 받아온다. ans = 0, cnt = 0, block = 0; for (int i = 1; i > x; int lx = lastseen[x]; if (lx != 0) { block = max(block, lx); cnt = i - blo..

[C++] auto 타입 추론

??? 내가 auto를 찾아보게 된 경로가 무엇인가? C++을 사용하여 set을 구현하는 도중 set의 모든 element에 접근하여 이들을 출력하는 for문을 확인하였다. cout 초기화 값에 따라 알아서 데이터 타입을 정해주는 키워드 라고 불린다. => 선언한 변수나 람다 식의 타입을 컴파일러에게 추론하도록 맡긴다. ex) auto a1 = 10; // int 타입 auto a2 = 10.0f; // float 타입 auto a3 = "c"; // char 타입 auto a4 = "BlockDMask"; // string 타입 auto a5 = {10, 20, 30}; //int 배열 타입 단순한 자료형 뿐만 아니라 iterator를 선언하는 데에서도 적용 할 수 있다. #include #includ..

728x90