순열(1) 순열 _ nPr- 서로 다른 n개 중에서 r개(n≥r)를 골라 순서를 고려해 나열한 경우의 수- ex) 0~8 까지의 숫자 중에서 3개의 숫자를 순열로 뽑는 경우→ ( 0 1 2 ) / (1 2 0) / ( 1 0 2 ) 는 모두 다른 경우012가능120가능210가능 순열 알고리즘 핵심- 순열 알고리즘에서는 item과 bucket을 사용 ( 상황에 따라 item과 bucket을 어떻게 정하는지가 핵심 포인트 )- item : 뽑을 수 있는 숫자 / 같은 특성을 갖고 있는 것들의 집단→ 오늘 순열 예제에서 item은 0부터 n까지 총 item개만큼의 수를 뽑아야 한다는 것을 의미( ex) int item = 5; // 0~4까지 총 5개의 수를 뽑아야 한다는 것..
조합(1) 조합 _ nCr- 서로 다른 n개 중에서 r개(n≥r)를 뽑는 경우- 경우의 수에서 순서를 고려하지 않는 경우를 말한다- ex) 0~8 까지의 숫자 중에서 3개의 숫자를 조합으로 뽑는 경우 ( 0 1 2 ) / (1 2 0) / ( 1 0 2 ) 는 1가지 경우- 알고리즘을 짤 때 항상 오름차순 / 내림차순으로 뽑아서 중복 방지013가능103불가능 - 오름차순의 경우 ( 0 1 3 ) 은 가능하지만 ( 1 0 3 ) 은 불가능하기 때문에 같은 수의 조합을 방지할 수 있다 조합 알고리즘 핵심- 조합 알고리즘에서는 item과 bucket을 사용 ( 상황에 따라 item과 bucket을 어떻게 정하는지가 핵심 포인트 )- item : 뽑을 수 있는 숫자 / 같은 특성을 갖고 있는 것들의..
정적할당과 동적할당(1) 정적할당- 변수 선언을 통해 필요한 메모리를 할당- 많은 양의 메모리는 주로 배열을 사용 ex) int arr[100]그러나 필요한 양이 예측되지 않는 경우 프로그램 작성 시에 할당받을 수 없다.이런 경우에 "동적할당"을 사용한다! (2) 동적할당- 프로그램 실행 중에 운영체제로부터 사용할 메모리 공간을 할당- 힙(heap)으로부터 할당 - 사용자가 메모리 할당을 해제하기 전까지 계속 유지※ 힙 : 운영체제가 소유/관리하는 메모리 동적할당 사용 방법- malloc() / free() 라이브러리 함수 사용- 라이브러리 함수 사용하기 위해 include 해야 함 (1) malloc() / free() 함수 사용 방법- malloc() : 크기만..