본문 바로가기

자료구조와 알고리즘/[Inflearn_큰돌] 10주 완성 C++ 코딩테스트15

0주차-3. 기초 개념 : 조합(Combination) 조합이란? 조합이란 서로 다른 n개중에 r개를 선택하는 경우의 수를 의미한다. (순서 상관 없음) 조합이 순열과 다른 대표적인 점은 순서가 달라도 요소가 같으면 같은 조합으로 본다는 것이다. 1, 2, 3, 4, 5라는 집합이 있을 때 {1, 2, 3, 4, 5}, {2, 1, 3, 4, 5}, {3, 1, 2, 4, 5} .... 등등 순서를 바꿔도 같은 조합으로 본다는 것이 대표적인 차이점이다. 조합은 n C r로 표현하며 개수를 구하는 식은 아래와 같다. 재귀함수를 이용한 구현 (뽑아야 할 수(r) 가 4개 이상인 경우) void combination(int start, int n, int k, std::vector& v) { // n : 최대 조합 수 'n'Cr // k : 그 조합에서 추출할 요.. 2022. 9. 3.
0주차-2. 기초 개념 : 순열(Permutation) 순열이란? 순열이란 서로 다른 n개중에 r개를 선택하는 경우의 수를 의미한다. (순서 상관 있음) 1, 2, 3이라는 수들의 집합이 있을 때 {1, 2, 3}, {1, 3, 2}, {2, 1, 3}, {2, 3, 1}, {3, 1, 2}, {3, 2, 1} 이렇게 6가지 순열이 나온다. n P r이란, 쉽게 말해 n개중에 r개로 이루어진 수열을 만든다는 뜻. 프로그램에서 구현 방법은? do-while문을 이용한 구현 #include #include #include #include template void print(const T& container) { for (auto e : container) std::cout 2022. 9. 3.
0주차-1. 기초 개념 : 재귀함수 재귀함수(Recursion function)란 정의 단계에 자신을 재참조하는 함수이다. 재귀함수의 특징 전달되는 '상태'인 '매개변수'만 달라질 뿐 똑같은 일을 한다. 그러다가 어떤 '상태'에 도달했을 때 종료되는 '기저 사례'가 있다. 함수 호출에 대한 코스트가 크므로 반복문으로 풀 수 있으면 반복문으로 푸는게 좋다. 큰 문제를 작은 문제로 나누어 해결할 때 사용한다. 재귀함수를 사용할 때 주의해야 할 점 기저 사례를 반드시 작성해야 한다. (안그러면 무한히 반복하므로) 사이클이 있다면 사용할 수 없다. ( f(a) -> f(b) -> f(a) ... 같은 이유로 무한 반복..) Factorial 이 점화식을 코드로 표현하면 아래와 같다. int factorial(int n) { if (n < 2) r.. 2022. 9. 1.