프로그래밍14 [알고리즘] 조합 C++로 구현하기 일반적인 for문의 경우, 연산량이 너무 많기 때문에 계산이 제대로 처리되지 않는다. 그래서 곱하면서 나누는 전략이나, 파스칼의 삼각형으로 풀어야 한다. 다음은 nCm을 출력하기 위한 두 종류의 코드이다. 1. for문으로 풀기 #include using namespace std; // 이걸로 30이상 계산하려고 하면 for문이 터져버린다 int factorial(int n){ int result = 1; for(int i = 1; i > n >> m; unsigned long long res = 1; //int res = 1; // 0부터 m까지 곱하면서 동시에 나눈다. for(int i = 0; i > m; // 0으로 .. 2019. 4. 5. [알고리즘] 최대공약수와 최소공배수 C++ 구현 * 최대공약수(GCD : Greatest CommonDivisor) * 최소공배수(LCM : Lowesr Common Multiplier) 유클리드 호제법 - 최대공약수를 구하기 위한 알고리즘 - 숫자 a, b의 최대공약수를 구하기 r = a를 b로 나눈 나머지로 설정하고 a, b의 값을 이동시킨다. a b r 152 68 20 68 20 8 20 8 4 8 4 -> 나누어 떨어짐 --> 4가 최대공약수임 a b r 152 68 20 68 20 8 20 8 4 8 4 -> 나누어 떨어짐 --> 4가 최대공약수임 #include using namespace std; int main() { int a, b; cin >> a >> b; int GCD, LCM; // 최대공약수, 최소공배수 int a2, b2;.. 2019. 4. 5. [알고리즘 문제] 백준 1268번 : 임시 반장 정하기 https://www.acmicpc.net/problem/1268 1268번: 임시 반장 정하기 오민식 선생님은 올해 형택초등학교 6학년 1반 담임을 맡게 되었다. 오민식 선생님은 우선 임시로 반장을 정하고 학생들이 서로 친숙해진 후에 정식으로 선거를 통해 반장을 선출하려고 한다. 그는 자기반 학생 중에서 1학년부터 5학년까지 지내오면서 한번이라도 같은 반이었던 사람이 가장 많은 학생을 임시 반장으로 정하려 한다. 그래서 오민식 선생님은 각 학생들이 1학년부터 5학년까지 몇 반에 속했었는지를 나타내는 표를 만들었다. 예를 들어 학생 수가 5명일 때의 www.acmicpc.net #include using namespace std; int main() { //Please Enter Your Code Her.. 2019. 4. 4. [정렬 알고리즘] 선택정렬, 삽입정렬, 버블정렬 C++ 구현 선택 정렬, 삽입정렬, 버블정렬은 모두 최악의 경우 quadratic time에 수행되는 정렬이다. 1. 선택정렬 선택 정렬은, i (0~n-1)번째의 인덱스에 i부터 n-1까지 중 가장 작은 값을 넣는 작업을 반복하는 정렬입니다. #include using namespace std; int main() { int n; int data[100]; cin >> n; for(int i = 0; i > data[i]; } for(int i = 0;i data[j]){// j : i ~ 1까지(j-1이랑 비교) int temp; temp = data[j-1]; data[j-1] = data[j]; data[j] = temp; } else break; // 더 크면 더이상 비교할 필요 x(앞은 정렬이 되어있으니까.. 2019. 4. 4. 이전 1 2 3 4 다음