반응형

Computer science 47

Union - Find 알고리즘

유니온 파인드 알고리즘은 상호 배타적 집합(Disjoint-set)이라고도 한다. 아래 세 가지 연산으로 이루어짐 1. 초기화 parent=[i for i in range(5)] 1차원 배열을 사용해서 n개의 원소가 서로 다른 집합에 속하도록 한다. i의 부모 노드는 parent[i] 2. Find def find(x) : if x == parent[x] : return x else : return find[parent[x]] 노드 x가 어느 집합에 속하는지 찾는 연산(=x의 루트 찾기) x==parent[x]면 x가 부모 노드 그렇지 않다면 재귀 호출을 사용해 루트를 찾아 반환 아래는 find 함수를 최적화한 코드 def find(a) : if a == parent[a] : return a parent..

문자의 표현

코드체계 : 숫자와 대응 되는 문자 형태로 저장하는 방법 ASCII코드(American Standard Code for Information Interchange) : 7비트 코드체계, 미국에서 네트워크가 발전하기 전 각 지역별로 코드 체계를 정해 사용했었다. 네트워크가 발전 후 서로간의 정보를 오인없이 주고 받기위해 고안함. 확장 ASCII 코드 : 1Byte 표준 문자 이외에 특수 문자, 특수 기호 등을 표현하기 위해 고안됨. 유니코드 : 다국어 처리를 위해 고안됨. 정보를 표현하기 위한 글자들의 집합을 문자 집합 문자집합(Character Set)은 UCS-2(Universal Character Set 2)와 UCS-4(Universal Character Set4) 바이트 순서에 대해서는 표준화하지..

Binary Search

#include #define LEN 7 int BinarySearch(int* ar, int key) { int up, down, mid; down = 0; // 처음 up = LEN - 1; // 끝 for (;;) { // 무한루프 // 중앙 원소 mid = (up + down) / 2; if (ar[mid] == key) return mid; // 목표 값이 원소보다 작다면 왼쪽 반 수행 if (ar[mid] > key) { up = mid - 1; // 왼쪽으로 } else { down = mid + 1; // 오른쪽으로 } // 검색이 끝남 if (up < down) { return -1; } } } int main() { int tc, key, arr[LEN] = { 0, }; // 테스트 ..

Sequential Search

#include #define LEN 5 int sequentialSearch(int* ar, int key) { unsigned int i; // 자료의 처음부터 끝까지 반복 for (i = 0; i < LEN; i++) { // 숫자가 존재할 경우 if (ar[i] == key) { return i; // key의 인덱스 반환 } } return -1; } int main() { int tc, key, arr[LEN] = { 0, }; // 테스트 케이스 수, 찾는 숫자, 배열 scanf_s("%d", &tc); // 테스트 케이스 수 입력 for (int t=0; t < tc; t++) { for (int i=0; i < LEN; i++) scanf_s("%d", &arr[i]); // 배열 입력 ..

Counting Sort

#include #define LEN 8 int main() { int maxValue=0; int data[LEN]; int count[LEN] = { 0, }; int temp[LEN] = { 0, }; for (int i = 0; i < LEN; i++) { scanf_s("%d", &data[i]); // 데이터 입력받기 } for (int i = 0; i < LEN; i++) { if (maxValue < data[i]) maxValue = data[i]; // counts배열의 크기 구하기 count[data[i]] += 1; // 발생 횟수 세기 } // 각 항목 위치 설정을 위한 카운트 조정 for (int i = 1; i = 0; i--) { temp[--count[data[i]]] = ..

반응형