in_the_silences
n이 양의 정수일 때, n과 서로소인 1부터 n까지의 정수의 개수. \[\phi(n)\] p가 소수이면, \[\phi(p^{k}) = p^{k-1}(p-1)\] 또한, 오일러 피 함수는 곱셈적 함수이므로, 다음이 성립. \[\phi(mn) = \phi(m)\phi(n)\]
p가 소수이고, a가 p로 나누어지지 않는 정수(서로소)이면 \[a^{p-1}\equiv1(\bmod p)\] \[a^{p}\equiv a(\bmod p)\] p가 소수이면 페르마의 소정리를 만족하지만, 역은 성립하지 않음. p가 합성수이면서 정리를 만족하는 경우, 이런 p를 유사소수라 함. (합동 : 나머지가 같은 두 정수 사이의 관계) (합성수 : 1보다 큰 모든 정수 중 소수가 아닌 수) RSA방식으로 암복호화하는 과정에 활용. ㅇhttps://ko.wikipedia.org/wiki/RSA_%EC%95%94%ED%98%B8
디자인 원칙 : 바뀌는 부분을 안바뀌는 부분에서 때어내어 캡슐화 Strategy - 알고리즘을 인터페이스화, 상황에 따라 알고리즘을 바꾸고 싶을 때 유용- 상속받을 클래스에 인터페이스를 포함시켜 알고리즘을 구현하여 캡슐화 Observer - 객체의 상태변화를 관찰하는 관찰자들을 사용, 느슨한 결합으로 주체는 수정을 하지 않아도 됨- GUI, 채팅 프로그램에 유용 Decorator - 추가적인 요건을 동적으로 클래스 확장, Java I/O가 예시 Factory - 객체 생성을 캡슐화, 생성과 사용을 분리, 객체를 동적으로 생성시 유용- 객체 생성을 담당하는 인터페이스를 만들어 상속받은 클래스에서 구현 Singleton - 프로그램 내에서 인스턴스가 하나만 존재, 어디서든 접근 가능- 로그기록, 유저 매니저..
http://www.cplusplus.com/reference/string/string/ 1. 시작 위치와 끝나는 위치 str.being()str.end()int main () { std::string str ("Test string"); for ( std::string::iterator it=str.begin(); it!=str.end(); ++it) std::cout
텐서플로우 - 구글 제품에 사용되는 머신러닝을 위한 오픈소스 소프트웨어 라이브러리. 파이썬 API제공 단위 테스트 - 프로그램의 기본 단위인 모듈을 테스트. 통합테스트와 대비. 자동화, 반복 실행, 쉬운 구현, 쉬운 실행, 빠른 속도, 로직없는 테스트 등등이 좋은 단위 테스트의 요건. C언어에서 공백 개행 포함하여 입력받기 - cin.getline(arr, SIZE, NULL) C언어 개행 수행시간 - cout
1. 커밋단위: 최소단위로 유지(Atomic), 하나의 커밋은 하나의 의도와 의미만을 가짐. 여러 파일을 수정하더라도 하나의 의미만 갖도록. 하나의 파일을 수정하더라도 버그 수정과 새 기능 추가를 동시에 하지 않음. 2. 커밋메세지 작성: 커밋의 성격이 무엇인지 한번에 알 수 있는 단어로 '카테고리'작성. 예를 들어 Fix, Add, Mod, Rm 등. 간단한 한 줄 설명을 '메세지'에 작성. 왜 커밋했는지, 버그의 경우 원래 문제에 대한 설명, 이슈 트래커가 있다면 이슈의 하이퍼링크 포함하여 '세부내용' 작성. 3. 브랜치 이름 작성: 기능별 핵심단어로 시작하여 '/'로 브랜치의 이름을 정함. 예를 들어 new/awesome artificial, bug/facial problem ver2, test/u..
이진탐색트리의 문제점(균형이 맞지 않을수록 선형에 가까운 시간복잡도를 보임)에서 시작 균형 인수 = 왼쪽 서브트리의 높이 - 오른쪽 서브트리의 높이 균형인수가 2이상이 되지 않도록 삽입삭제시 자동으로 균형을 유지 1. LL과 RR (LL) 우선 3의 오른쪽 서브트리를 5의 왼쪽 서브트리로 붙이고, 3의 오른쪽 서브트리로 5를 붙임RR은 방향을 반대로 생각 2. LR과 RL (LR) LR상태를 RR을 이용해 LL로 바꾸고 위의 과정(LL회전)을 재적용RL은 반대로 생각 LR상태1과 3을 RR을 적용해(부모자식자리 교환) LL상태로 만듦LL을 적용해 균형잡고 끝냄
이진탐색트리 : '작으면 왼쪽으로, 크면 오른쪽으로'를 지키며 데이터를 삽입하여 트리를 구성, 에 탐색가능 - 삽입삭제 과정에서 대상이 되는 노드(새 노드, 삭제할 노드)와 그 노드의 부모 노드의 위치를 기준으로 진행 1. Insert 넣을 자리 노드의 부모노드에 대한 위치정보를 계속 갱신하며 단말노드를 만날때까지 탐색최종적으로 부모노드와 크기를 비교하여 왼쪽 또는 오른쪽 단말노드로 새 노드 추가 2. Delete (경우의 수 3개 - 단말노드, 하나의 자식노드를 가진 노드 , 2개의 자식노드를 가진 노드) 두개의 자식노드를 가진 노드를 삭제하는 경우,삭제할 노드의 왼쪽 서브트리 중 가장 큰 값이나 오른쪽 서브트리 중 가장 작은 값으로 삭제할 노드를 대체우선 오른쪽 서브트리에서 최소값을 찾고(왼쪽방향으로..
기본적인 원리 이해만을 위해 배열에 담겨있는 정렬되지 않은 숫자를 정렬(오름차순)할 수 있는 함수들로 구성 1. Bubble : 서로 인접한 데이터를 비교하여 교환 2. Selection : 최우선순위을 탐색하여 정렬대상의 가장 앞자리와 교환 3. Insertion : 이미 정렬되어 있는 대상의 최저순위(맨 뒤)부터 비교하여 자리를 찾아(하나씩 뒤로 밀며 자리를 만듦) 삽입 4. Heap : 힙의 루트 노드에 저장된 값이 우선순위가 가장 높은 것을 이용, 모든 자료를 삽입 후 뽑아내어 정렬 (Heap - 완전 이진 트리, 자식노드보다 항상 더 크거나 같음, 루트노드가 가장 큼, 크다는 것은 우선순위를 뜻함) 삽입 시 우선 가장 마지막 노드에 삽입 후 부모 노드와 우선순위를 비교, 올라가면서 자리를 찾음뽑..
Queue : 스택과 달리 FIFO의 입출력을 가진 자료구조 1. 배열 기반의 큐 Front를 출력기준, Rear를 입력기준 환형 큐로 하여 F와 R이 같은 곳을 가리킬 때 Empty, F의 다음 칸이 R일 경우 Full(배열의 길이가 N이라면 데이터가 N-1개 채워졌을 때 Full로 간주) enqueue, dequeue시 각각 R과 F를 한 칸씩 이동시킨 후 가리키는 위치의 데이터를 조작 2. 링크드 리스트 기반의 큐 F와 R을 포인터로 두고 각각 출력, 입력의 기준점이라 간주(스택의 경우는 한 곳에서 입출력이 이루어 짐) cf. Deque(덱) : 앞뒤로 입출력이 모두 가능한 큐, 더블 링크드 리스트로 구현 BinaryTree : 최대 두개의 자식노드를 가지는 트리, 공집합 노드도 이진트리의 판단 근..