본문 바로가기

반응형

전체 글

(48)
[암호학] 1. 암호학에서 사용되는 수학(2) 1. 나누어떨어짐(Divisibility)암호학에서 관심 있는 수의 범위는 오로지 정수이기 때문에, 나눗셈에 있어서도 나누어떨어짐(Divisibility)에 제일 관심이 많다.간단히, 나누어떨어짐 이라는 것은 나머지(remainder)가 0인 것이다. r=0 이므로 앞선 나눗셈의 관계는 다음과 같이 나타낼 수 있게 된다. 이렇게 나타낼 수 있을 때, b가 a로 나누어떨어지는 경우 a|b로 나타내며, b가 a로 나눠어떨어지지 않는 경우 a∤b로 나타낸다. 1) 성질① if a|1, then a = ±1② if a|b and b|a, then a = ±b③ if a|b and b|c, then a|c④ if a|b and a|c, then a|(mXb+nXc), where m,n are arbitrary i..
[암호학] 1. 암호학에서 사용되는 수학(1) 1. 서론우선 암호학에 들어가기에 앞서, 암호학은 수학의 '정수론' 분야에 기초를 두고 있다. 수학에 기초를 두고 있는 만큼, 암호학을 공부하기 위해서는 '정수론'에서 사용되는 연산을 적어도 조금은 이해하고 사용할 줄 알아야 한다. 그래서 우선, 암호학에서 사용되는 '정수론'을 잠깐 소개하고자 한다. 2. 정수 연산(Integer Arithmetic)1) 정수 집합(Set of Integers)앞서 말했듯이 우리가 암호학에서 관심이 있는 수학 분야는 '정수론'이다. 그렇기에 우선 가장 먼저 '정수 집합(Set of Integers)'를 정의하자. 간단히 Z라고 표시하며, 음의 무한대부터 양의 무한대까지의 (소수가 없는) 진정수(Integral number)로 이루어져있는 집합이라고 한다. 쉽게 말해, 아..
[알고리즘] 1_3. 선택 정렬(Selection Sort) 1. 정의선택 정렬(Selection Sort)이란, 현재 선택된 데이터 이후의 정렬 되지 않은 데이터 중에서 가장 작은(혹은 가장 큰) 데이터를 선택해 현재의 데이터와 위치를 교환하는 방식으로 정렬되는 방식이다. 2. 설명PASS 1우선 가장 앞의 데이터가 선택되게 된다. 그리고 그 데이터 이후를 탐색해 가장 작은 데이터를 찾는다. 최소 값의 데이터를 찾았다면, 두 데이터의 위치를 교환해준다. 예시의 데이터에서는 4 와 1 의 위치를 교환해주게 된다. PASS 2두 번째에서는, 2 가 선택되게 된다. 선택된 이후의 데이터에서 2 보다 작은 값은 존재하지 않으므로, SWAP 과정이 존재하지 않고 완료될 것이다. PASS 3PASS 3에서도 PASS 1, PASS 2와 동일한 방법을 시행한다. PASS 4..
[알고리즘] 1_2. 버블정렬(Bubble Sort) 1. 정의 버블 정렬(Bubble Sort)은 정렬될 때 그 모습이 마치 거품이 위로 하나씩 오르는 듯하다고 해서 이름이 붙여졌다. 원리와 코드가 간단하기 떄문에, 정렬 알고리즘을 배울 때 많이 쓰이는 듯 하다. 버블 정렬의 가장 중요한 원리는 다음과 같다. - 인접한 두개의 데이터를 비교해 가장 큰(혹은 작은) 데이터를 오른쪽에 오도록 위치를 바꾼다. 위 과정을 반복하면, 가장 오른쪽에는 가장 큰(혹은 작은) 데이터부터 쌓이게 된다. 이를 이용해 데이터를 정렬하는 과정을 버블 정렬(Bubble Sort)라고 한다. 2. 설명 PASS 1 버블 정렬은 항상 인접한 두개의 데이터를 비교해가며, Swap을 통해 자료를 정렬한다. 그 순서를 보면 다음과 같다. 우선 2 와 3 을 비교해본다. 3 이 2 보다 ..
프로그래밍 코드 블로그에 복사하기 블로그에 프로그래밍 소스코드를 첨부하고 싶을 떄, 그냥 일반 글과 같이 복사, 붙여넣기를 하면 코드의 가독성이 좋지 않다.그래서 코드를 블로그 글에 첨부하고자 할 때 Color Scripter라는 사이트를 이용한다.http://colorscripter.com사용법은 쉽다. 위 링크를 따라 들어가면 아래와 같이 보일 것이다. 여기서 언어를 선택하고, 아래에 넣고자 하는 코드를 복사한다.그런 다음 우측 하단의 클립보드에 복사 버튼을 누른다. 그리고 블로그에 접속해 글쓰는 본문에 붙여넣으면 된다.(html에 복사하지 않아도 되서 편하다!)
[알고리즘] 1_1. 삽입정렬(Insertion Sort) 1. 정의 삽입 정렬(Insertion Sort)는 비교적 간단한 정렬 방법 중 하나이다. 삽입 정렬에서의 가장 중요한 규칙은 다음과 같다. - 현재 선택된 데이터 이전의 데이터들은 항상 정렬된 상태이다. 좀 더 알기 쉽게 그림으로 표현하자면, 다음과 같을 것이다. 이를 만족하는 상태로 데이터를 재정렬하는 과정을 삽입 정렬(Insertion Sort)라고 한다. 2. 설명 PASS 1삽입정렬은 두번째 Index부터 시작된다. 제일 앞의 원소는 원소가 하나이기 때문에, 그 자체로 정렬된 상태이기 때문이다. 우선, 4 와 2 의 크기를 비교해, 4 > 2 이므로, 2의 위치를 찾아 삽입해준다. PASS 2두번째로 5 가 선택된다. 5 앞의 정렬된 데이터의 최대값 4 보다 5 가 크므로, 현위치에 둔다. PA..
[알고리즘] 1. 정렬 1. 정의 정렬(Sort)이란 주어진 데이터를 일정한 규칙에 따라 재배열하는 것을 의미한다. 일반적으로 우리는 데이터를 정렬할 때, 오름차순(Ascending) 혹은 내림차순(Descending)으로 정렬 가능하다. 정렬 알고리즘은 많은 것들이 있는데, 현재도 꾸준히 제안되고 발전되고 있다. 많은 정렬 알고리즘들은 데이터의 양, 데이터의 초기 배열 상태 등에 따라서 그 성능이 달라지므로, 상황에 알맞은 정렬법이 필요하다. 2. 종류 1) 삽입 정렬(Insertion Sort) 현재 선택된 데이터를 정렬된 데이터 부분에서 위치를 찾아 '삽입'과정을 통해 정렬하는 방법이다. 성능은 평균적으로 O(n^2)이다. 다만 어느 정도 정렬된 데이터인 경우 매우빠른 속도를 자랑한다. >_본문으로 2) 버블 정렬(Bub..
[자료구조] 5. Tree 1. 정의Tree 구조는 Stack, Queue와 같은 선형적인 구조가 아니라 계층적인 구조를 가지고 있다. 계층적인 자료구조의 모습이 마치 나무와 비슷하게 보여, Tree라는 이름을 가지게 되었다. 자료를 Tree 구조로 저장하기 위해서는 나무의 잎인 Node에 데이터를 저장하고, 그 Node들의 연결을 가지(Branch)인 선분으로 연결한다. Graph의 측면에서 볼때, Tree는 cycle이 존재하지 않는 graph의 특수한 형태이다. 2. Tree 용어 정리- Node(노드) : Tree를 구성하는 기본 원소들을 말한다.- Root Node(루트 노드) : Tree를 구성하는 노드 중 가장 위의 노드를 일컫는다.- Parent : 어떤 노드의 Branch로 연결된 바로 위의 노드를 말한다.- Ch..