티스토리 뷰

Algorithm/BOJ

백준 2407번 C++

poopooreum 2023. 8. 6. 16:44
반응형
백준 2407번 조합

https://www.acmicpc.net/problem/2407

2407번: 조합

n과 m이 주어진다. (5 ≤ n ≤ 100, 5 ≤ m ≤ 100, m ≤ n)

www.acmicpc.net



정답 코드

#include <vector>
#include <string>
#include <iostream>

#define MOD 1000000000000000

using namespace std;

int n, m;
long long dp1[101][101], dp2[101][101];

int main() {
	cin >> n >> m;

	dp1[0][0] = 1;

	for (int i = 1; i <= n; i++) {
		dp1[i][0] = 1;
		for (int j = 1; j <= i; j++) {
			dp1[i][j] = dp1[i - 1][j] + dp1[i - 1][j - 1];
			dp2[i][j] = dp2[i - 1][j] + dp2[i - 1][j - 1];

			dp2[i][j] += dp1[i][j] / MOD;
			dp1[i][j] %= MOD;
		}
	}

	if (dp2[n][m] == 0) {
		cout << dp1[n][m] << '\n';
	}
	else {
		cout << dp2[n][m] << dp1[n][m] << '\n';
	}
}

문제 풀이

얼핏 보면 간단한 문제일수도 있지만 의외로 생각해야 할 점이 있습니다. 자료형의 크기를 long long형으로 해도 오버플로우가 발생합니다. 문자열로 계속해서 표현하는 방법도 있지만 조금 복잡해서 dp를 이용해서 풀었습니다.

반응형

'Algorithm > BOJ' 카테고리의 다른 글

백준 2438번 C++  (0) 2023.08.06
백준 2420번 C++  (0) 2023.08.06
백준 2355번 C++  (0) 2023.08.06
백준 2338번 Python  (0) 2023.08.05
백준 2312번 C++  (0) 2023.08.05
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/03   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31
글 보관함