본문 바로가기

컴퓨터 공학

(76)
정보 보호) 기본 개념 정리 암호 알고리즘 개인키 암호화 기법 / 대칭, 단일키 (Symmetric) 동일한 키로 데이터를 암호화하고 복호화한다. 블록 암호화 방식 : DES, SEED, AES, ARIA 스트림 암호화 방식 : RC 공개키 암호화 기법 / 비대칭 (Asymmetric) 암호화할 때는 공개키, 복호화할 때는 비밀키를 사용한다. 공개키는 데이터베이스 사용자에게 공개하고, 비밀키는 관리자가 관리한다. RSA 해시 (Hash) 임의의 길이의 입력데이터나 메시지를 고정된 길이의 값이나 키로 변환 Attack SQL 삽입 입출력 인터페이스의 허점을 이용하여 데이터베이스를 무단으로 조작하는 공격 입력 필터링 필요 CSRF 공격 Cross-site request forgery / 사이트 간 요청 위조 위조 요청을 전송하는 서비스..
소프트웨어공학) Application Test Management Verification vs Validation Verification 개발자 입장에서 개발한 소프트웨어가 명세서에 맞게 정확한 기능을 수행하는지 검증하는 것 Validation 사용자 입장에서 개발된 소프트웨어가 고객 요구사항을 만족시키는지 확인하는 것 어플리케이션 테스트의 기본 원리 완벽한 테스트 불가 결함 집중 파레토 법칙 : 80%의 결함이 20%의 코드에 집중되어 있다. 살충제 패러독스→ 지속적으로 테스트 케이스를 보완 및 개선해야 한다. 동일한 테스트 케이스로 동일한 테스트를 반복하면 더 이상 결함이 반복되지 않는다. 테스팅은 정황 의존 소프트웨어의 특징, 테스트 환경, 테스트 역량 등 정황에 따라 결과가 달라진다. 오류 부재 궤변 결함을 모두 제거해도 사용자를 만족시킬 수 있는 것은 아니다...
자료구조) 딕셔너리 ADT 딕셔너리 ADT ADT 탐색 가능한 형태의 { key, value } 쌍 데이터 상목들의 집단을 모델링한 것이다. 주요 작업 searching ** key 탐색을 통해 원하는 데이터를 찾는 것 inserting deleting 종류 unordered ordered key 순서를 기준으로 딕셔너리 ADT 메소드 int size() : 사전의 항목 수 반환 bool isEmpty() element findElement(key) insertItem(key, element) element removeElement(key) 탐색 데이터 집단으로부터 지정된 key를 가진 element를 추출하는 것 유일키 사전 : 한 개의 키에 대해 하나의 element만 존재 중복키 사전 : 한 개의 키에 여러 개의 elemen..
자료구조/C) 연결리스트를 이용한 실습 문제 풀이 문제 소스코드 #include #include typedef struct node { int coef; int exp; struct node* next; } Node; Node* newNode(int c, int e) { Node* p = (Node*)malloc(sizeof(Node)); p->coef = c; p->exp = e; p->next = NULL; return p; } Node* appendTerm(Node *k, int c, int e) { //k는 마지막항 Node* t = newNode(c, e); Node* khead = newNode(NULL, NULL); khead->next = k; while ((khead->next) != NULL) { khead = khead->next; ..
자료구조/C) 연결리스트 ADT #include #include #include typedef struct node { char item; struct node *next; struct node *prev; } Node; typedef struct list { Node *head; Node *tail; int n; }List; typedef List *Plist; void initList(Plist list){ list->head = NULL; list->tail = NULL; list->n = 0; printf("initlist success\n"); } Node* newNode(char item) { Node *node = (Node*)malloc(sizeof(Node)); node->item = item; node->prev = ..
자료구조/C) 이진탐색트리 BST 응용 문제 소스 코드 문제 이전에 설명한 방식대로 트리 정보와 탐색 정보가 주어졌을 때, 트리를 생성하고 탐색 도중 방문하는 노드의 번호를 차례로 출력하는 프로그램을 작성하시오. 입력 예시 1 9 ↦ 노드 개수 5 3 9 (preorder - VLR) 3 8 15 8 0 2 2 0 0 15 0 0 9 7 10 7 12 0 12 0 0 10 0 0 3 ↦ 탐색 횟수 RLL LL LR 출력 예시 1 (□는 공백) □5 9 7 12 ↦ 첫 번째 탐색 결과 □5 3 8 ↦ 두 번째 탐색 결과 □5 3 15 ↦ 두 번째 탐색 결과 소스코드 #define _CRT_SECURE_NO_WARNINGS #include #include typedef struct node { int data; struct node* left; struct no..
힙 Heap 개념,우선순위 큐를 이용한 구현 (python)과 성능 비교, 힙 정렬, 상향식 힙 생성, 응용 문제 1. 힙 Heap 내부 노드에 키를 저장하며 다음 두가지 속성을 만족하는 이진트리 힙순서 (heap-order) : 루트를 제외한 모든 내부 노드 v key(v) >= key(parent(v)) 모든 노드의 경우, 부모노드의 키 값이 자식 노드의 키 값보다 작거나 같아야 한다. 완전이진트리 (complete binary tree) : 힙의 높이 h i = 0, ..., h-1에 대하여 깊이 i인 노드가 $2^i$개 존재 깊이 h-1에서 내부노드들은 외부노드의 왼쪽에 존재 즉, 진행순서 : Root - L - R ⇒ 힙의 마지막 노드는 깊이 h-1의 가장 오른쪽 내부 노드 n개의 키를 저장한 힙의 높이 = O(logn) 2. 힙을 이용한 우선순위 큐 구현 각 내부노드에 key-value 쌍을 저장 마지막 ..
Priority Queue 우선순위 큐 개념과 이를 이용한 정렬 및 응용 문제 파이썬 구현 1. 우선순위 큐 ADT 각 데이터 항목을 (키, 원소) 쌍으로 저장 ex) (학번, 점수), (주소, 우편물) unordered : 삽입시 데이터 키를 고려하지 않기 때문에 빠르지만 삭제는 키의 순서로 고려해야 해서 느리다. ordered: 삽입시 느리지만 삭제를 빠르다. 삽입 삭제의 빈도에 따라 구현 방식을 결정한다. 삽입시 키에 따라 정렬, 삭제시 키에 따라 정렬 키를 저장하기 위한 자료구조로 우선순위 큐를 활용한다. ADT 메소드 i) 주요 메소드 insertItem(k,e) : 키 k인 원소 e를 큐에 삽입 element removeMin() : 큐에서 최소 키를 가진 원소를 삭제하여 반환 ii) 일반 메소드 int size () : 큐의 항목 수 반환 bool isEmpty() : 큐가 비어있..