[자료구조/알고리즘] 재귀 함수를 이용한 부분 집합 생성 알고리즘
·
Algorithm/Algorithm
#define _CRT_SECURE_NO_WARNINGS #include #include using namespace std;vector subset;int n = 4;void search(int k){ if (k == n + 1) { for (int i = 0; i 1부터 n까지의 숫자로 만들 수 있는 부분 집합의 경우의 수를 출력하는 함수다.마지막 공집합은 빈 줄로 출력이 되기 때문에 실수로 놓치는 것에 주의한다. 우리가 부분집합을 손으로 (가지치기하여) 구할 때와 유사한 방식이라고 생각한다.다만 재귀 알고리즘은 익숙하지 않으면 코드 자체를 보고 실행결과를 예상하기가 힘들다.  아래는 n = 7 , r = 4 라고 가정..
[자료구조/알고리즘] 해시(Hash) 란?
·
Algorithm/Algorithm
Hash개념임의의 크기를 가진 데이터(Key)를 고정된 크기의 데이터(Value)로 변화시켜 저장하는 것키에 대한 해시값을 사용하여 값을 저장하고 키-값 쌍의 개수에 따라 동적으로 크기가 증가하는 associate array이다키에 대한 해시값을 구하는 과정을 hashing(해싱)이라고 하며 이때 사용하는 함수(알고리즘)를 해시함수라고 한다해시값 자체를 index로 사용하기 때문에 평균 시간 복잡도가 O(1)로 매우 빠르다해시함수위에 설명한 것과 같이 키에 대한 해시값을 만드는 함수계산이 복잡하지 않고 키값에 대해 중복 없이 해시값을 고르게 만들어 내는 함수가 좋은 함수 (충돌이 일어나지 않을수록 좋다)대표적으로 나눗셈 법(Division Method)과 곱셉 법(Multiplication Method)..