본문 바로가기

Language_/Algorithm7

[Algorithm] Permutation Algorithm(순열 알고리즘) with Python 순열.. 순열이 뭘까! 순열은 보통 고등학교 수학 시간에 배운다. 수학에서, 순열(Permutation) 또는 치환은 서로 다른 n개의 원소에서 r( 2020. 8. 19.
[C++] STL 프로그래밍 개념 [STL 프로그래밍 개념] STL이란?- Standard Template Library의 약자로, 프로그램에 필요한 자료구조와 알고리즘을 템플릿으로 제공하는 라이브러리. STL 구성 요소- 컨테이너(Container) : 객체를 저장하는 객체로 컬렉션 혹은 자료구조라고도 한다.- 반복자 : 포인터와 비슷한 개념으로 컨테이너의 원소를 가리키고, 가리키는 원소에 접근하여 다른 원소를 가리키게 한다.- 알고리즘 : 정렬, 삭제, 검색, 연산 등을 해결하는 일반화된 방법을 제공하는 함수 템플릿.- 함수 객체 : 함수처럼 동작하는 객체로 operator() 연산자를 오버로딩한 객체- 어댑터 : 구성 요소의 인터페이스를 변경해 새로운 인터페이스를 갖는 구성요소로 변경- 할당기 : 컨테이너의 메모리 할당 정책을 캡슐.. 2019. 10. 4.
[C++] 2차원 Vector [2차원 Vector] 우선 vector를 사용하기 위해서는 vector 헤더파일을 추가해야한다.#include 이중 벡터 만들기 (using namespace std;)vector arr; 일반 vector 생성자는 배열의 사이즈, 초기값을 쓴다.vectorarr(10,0); //10의 크기를 0으로 초기화 이중 vector도 비슷하게 초기화 하면 된다.vectorarr(10, vector(10,0); //10의 크기를 vetor(10,0)으로 초기화 즉 세로10, 가로10 이중벡터에 값넣기 (일반 2차원 배열처럼 넣는다.)#includevector arr(10,vector(10,0));int value = 1;for (int i = 0; i 2019. 9. 20.
[C++] STL 프로그래밍 _ unordered_map [unordered_map] unordered_map- 정렬되지 않은 map이다.- O(1)의 시간복잡도가 나온다.- 충돌하는 데이터가 많으면 O(n)의 시간복잡도가 나온다. 헤더#include 생성자unordered_map map; 접근자bool empty()- unordered map이 비어있다면 true, 아니면 falsesize_type size()- unordered map의 크기 리턴iterator begin()- 첫 원소를 가리키는 iterator를 리턴iterator end()- 마지막 원소를 가리키는 iterator를 리턴 2019. 9. 16.
[C++] STL 프로그래밍 _ 컨테이너 [Hash Map] 컨테이너의 종류- 시퀀스 컨테이너(Sequence Container) : 순서 있게 자료를 보관- 연관 컨테이너(Associative Container) : Key값과 짝지어 자료를 보관 (자료를 넣고, 빼고, 찾을 때는 key값이 필요) Sequence Container- 많지 않은 자료를 보관할때 사용- 검색 속도가 중요한 경우 사용 Sequence Container의 종류- vector- list- deque Associative Container- 대량의 자료를 저장할때 사용- 빠르게 검색을 하기 위해 사용 Associative Container의 종류- map- set- hash_map- hash_set- multi_map- multi_set- hash_multimap- ha.. 2019. 9. 16.
[알고리즘] 유클리드 호제법 #c언어 [유클리드 호제법] 유클리드 호제법 : 2개의 자연수 또는 정식의 최대공약수를 구하는 알고리즘의 하나.- 명시적으로 기술된 가장 오래된 알고리즘으로 알려져있다.- 기원전 300년경에 쓰인 유클리드의 제 7권, 명제 1부터 3까지에 해당 호제법 : 두 수가 서로 상대방 수를 나누어서 결국 원하는 수를 얻는 알고리즘 알고리즘- 2개의 자연수 a, b에 대해서 a를 b로 나눈 나머지를 r이라 하자 (단, a > b)- a와 b의 최대 공약수는 b와 r의 최대공약수와 같다.- 이 성질에 따라, b를 r로 나눈 나머지 r'를 구하고, 다시 r을 r'로 나눈 나머지를 구하는 과정을 반복- 이때 나머지가 0이 된다면 나누는 수가 a와 b의 최대공약수이다. [알고리즘]- 입력으로 두 수 m, n(m>n)을 입력받는다... 2018. 9. 26.
[알고리즘] 에라토스테네스의 체 #c언어 수학에서 에라토스테네스의 체는 소수를 찾는 방법이다. 알고리즘 설명.1. 2부터 소수를 구하고자 하는 구간의 모든 수를 나열한다. 그림에서 회색 사각형으로 두른 수들이 여기에 해당2. 2는 소수이므로 오른쪽에 2를 쓴다. (빨강)3. 자기 자신을 제외한 2의 배수를 모두 지운다.4. 남아있는 수 가운데 3은 소수이므로 오른쪽에 3을 쓴다. (초록)5. 자기 자신을 제외한 3의 배수를 모두 지운다.6. 남아있는 수 가운데 5는 소수이므로 오른쪽에 5를 쓴다. (파랑)7. 자기 자신을 제외한 5의 배수를 모두 지운다8. 위의 과정을 반복하면 구하는 구간의 모든 소수가 남는다. 알고리즘 구현 (c언어) 배열에서 소수인칸에는 1, 소수가 아닌칸에는 0을 넣어 나중에 갯수를 세어 소수의 갯수를 구할것이다. 즉, .. 2018. 8. 17.