본문 바로가기
백준(복습 및 풀이계획)/단계별 복습(~23.06)

백준 복습 - 정수론 및 조합론

by C0MPAS 2023. 2. 27.

정수론 및 조합론 - 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];
}

댓글