정수론 및 조합론 - 5086번: 배수와 약수
https://jh4995.tistory.com/141
정수론 및 조합론 - 5086번
2월 6일(월) - 정수론 및 조합론(5086번) 5086번: 배수와 약수 각 테스트 케이스마다 첫 번째 숫자가 두 번째 숫자의 약수라면 factor를, 배수라면 multiple을, 둘 다 아니라면 neither를 출력한다. www.acmicpc.
jh4995.tistory.com
정수론 및 조합론 - 1037번: 약수
https://jh4995.tistory.com/142
정수론 및 조합론 - 1037번
2월 6일(월) - 정수론 및 조합론(1037번) 1037번: 약수 첫째 줄에 N의 진짜 약수의 개수가 주어진다. 이 개수는 50보다 작거나 같은 자연수이다. 둘째 줄에는 N의 진짜 약수가 주어진다. 1,000,000보다 작
jh4995.tistory.com
정수론 및 조합론 - 2609번: 최대공약수와 최소공배수
https://jh4995.tistory.com/143
정수론 및 조합론 - 2609번
2월 6일(월) - 정수론 및 조합론(2609번) 2609번: 최대공약수와 최소공배수 첫째 줄에는 입력으로 주어진 두 수의 최대공약수를, 둘째 줄에는 입력으로 주어진 두 수의 최소 공배수를 출력한다. www.ac
jh4995.tistory.com
정수론 및 조합론 - 1934번: 최소공배수
https://jh4995.tistory.com/146
정수론 및 조합론 - 1934번
2월 7일(화) - 정수론 및 조합론(1934번) 1934번: 최소공배수 두 자연수 A와 B에 대해서, A의 배수이면서 B의 배수인 자연수를 A와 B의 공배수라고 한다. 이런 공배수 중에서 가장 작은 수를 최소공배수
jh4995.tistory.com
정수론 및 조합론 - 2981번: 검문
https://jh4995.tistory.com/161
정수론 및 조합론 - 3036번: 링
1) 유클리드 호제법 추가공부
https://jh4995.tistory.com/147
정수론 및 조합론 - 3036번
2월 7일(화) - 정수론 및 조합론(3036번) 3036번: 링 출력은 총 N-1줄을 해야 한다. 첫 번째 링을 제외한 각각의 링에 대해서, 첫 번째 링을 한 바퀴 돌리면 그 링은 몇 바퀴 도는지 기약 분수 형태 A/B로
jh4995.tistory.com
정수론 및 조합론 - 11050번: 이항계수 1
https://jh4995.tistory.com/150
정수론 및 조합론 - 11050번
2월 8일(수)-정수론 및 조합론(11050번) 11050번: 이항 계수 1 첫째 줄에 \(N\)과 \(K\)가 주어진다. (1 ≤ \(N\) ≤ 10, 0 ≤ \(K\) ≤ \(N\)) www.acmicpc.net ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
jh4995.tistory.com
정수론 및 조합론 - 11051번: 이항계수 2
1) 동적 계획법(Dynamic Programming) 추가공부
2) 동적 계획법의 top-down 방식과 down-top방식의 비교에 대한 추가공부
3) 동적 계획법에서의 2차원배열 정적선언 혹은 동적선언 선택 가능여부
https://jh4995.tistory.com/151
정수론 및 조합론 - 11051번
2월 8일(수)-정수론 및 조합론(11051번) 11051번: 이항 계수 2 첫째 줄에 \(N\)과 \(K\)가 주어진다. (1 ≤ \(N\) ≤ 1,000, 0 ≤ \(K\) ≤ \(N\)) www.acmicpc.net ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
jh4995.tistory.com
정수론 및 조합론 - 1010번: 다리 놓기
1) 곱셈과 나눗셈 동시에 진행시 유의해야하는 점 복습
https://jh4995.tistory.com/153
정수론 및 조합론 - 1010번
2월 9일(목) - 정수론 및 조합론(1010번) 1010번: 다리 놓기 입력의 첫 줄에는 테스트 케이스의 개수 T가 주어진다. 그 다음 줄부터 각각의 테스트케이스에 대해 강의 서쪽과 동쪽에 있는 사이트의 개
jh4995.tistory.com
정수론 및 조합론 - 9375번: 패션왕 신해빈
https://jh4995.tistory.com/160
정수론 및 조합론 - 1676번: 팩토리얼 0의 개수
1) 해당 풀이에서 조건문에 (if 를 쓰는 경우 / while 을 쓰는 경우) - 각각 왜 다른지 복습
https://jh4995.tistory.com/155
정수론 및 조합론 - 2004번: 조합 0의 개수
1) 1676번 문제의 풀이와 비교해서 변경된 점 복습
https://jh4995.tistory.com/159
정수론 및 조합론 - 2004번
2월 16일(목)-정수론 및 조합론(2004번) 2004번: 조합 0의 개수 첫째 줄에 정수 $n$, $m$ ($0 \le m \le n \le 2,000,000,000$, $n \ne 0$)이 들어온다. www.acmicpc.net ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
jh4995.tistory.com
정수론 및 조합론의 경우
5086번부터 3036번까지 6개의 정수론 부분과 나머지 6개의 조합론 부분으로 구성되어 있다
- 정수론 부분에서는 최대공약수와 최소공배수 구하는 것이 주된 내용이다
이를 위해서는 다른 방법도 있지만, 결국 유클리드 호제법을 이용하는 것이 가장 간단하면서 중요하다
가장 까다로운 2981번에 대해서는 전체적인 복습이 필요하다
// 최대공약수(Greatest Common Divisor) 구하기
int GCD(int a, int b)
{
if(b == 0)
{
return a;
}
else
{
return GCD(b, a % b);
}
}
// 최소공배수(Least Common Multiple) 구하기
int LCM(int a, int b)
{
return (a * b) / GCD(a, b);
}
- 조합론 부분에서는 mCn 의 형태를 기본으로 놓고, 이를 m! / n! (m-n)! 혹은 mPn / n! 으로 바꾸면서 계산한다
이 과정에서 분모에 위치하게되는 팩토리얼의 숫자 범위에 의해서 오버플로가 발생할 수 있으므로,
n!을 한 번에 나누지않고 1부터 n까지의 숫자를 하나씩 나누는 방식으로 바꾸는 등의 다른접근이 필요하기도 하다
또한 동적계획법이라는 알고리즘이 존재한다
// 동적계획법
int dp[1001][1001];
int cal(int n, int k)
{
for (int i = 0; i <= n; i++)
{
for (int j = 0; j <= k; j++)
{
if (i == j || j == 0)
{
dp[i][j] = 1;
}
else
{
dp[i][j] = (dp[i - 1][j - 1] + dp[i - 1][j]) % 10007;
}
}
}
return dp[n][k];
}
'백준(복습 및 풀이계획) > 단계별 복습(~23.06)' 카테고리의 다른 글
백준 복습 - 백트랙킹 (0) | 2023.02.28 |
---|---|
백준 복습 - 2차원 배열 (0) | 2023.02.28 |
백준 복습 - 기하 1 (0) | 2023.02.24 |
백준 복습 - 집합과 맵 (0) | 2023.01.31 |
백준 복습 - 브루트 포스 (0) | 2023.01.30 |
댓글