(c++) 2407_조합

이아름·2022년 12월 16일
0

코딩테스트

목록 보기
5/6
post-thumbnail

문제 : 2407) 조합

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


저는 string을 사용해서 문제를 풀었습니다.
최대한 반복된 코드를 사용하지 않기 위해
연산할 때는 하나의 for문 안에서 해결 할 수 있도록 하였습니다.

코드

#include <iostream>
#include <string>
using namespace std;

string dp[101][101];
int N, M;
string getSum(string n1, string n2) {
	int i1 = n1.size() - 1, i2 = n2.size() - 1;
	int add = 0;
	string answer = "";
	for (; i1 >= 0 || i2 >= 0; i1--, i2--) {
		int sum = add;
		if (i1 >= 0) {
			sum += (n1[i1] - '0');
		}
		if (i2 >= 0) {
			sum += (n2[i2] - '0');
		}
		add = sum / 10;
		sum %= 10;
		answer = to_string(sum) + answer;
	}
	if (add > 0) {
		answer = to_string(add) + answer;
	}
	return answer;
}

int main() {
	cin >> N >> M;
	for (int i = 0; i <= N; i++) {
		dp[i][0] = dp[i][i] = "1";
		for (int k = 1; k < i; k++) {
			dp[i][k] = getSum(dp[i - 1][k], dp[i - 1][k - 1]);
		}
	}
	cout<<dp[N][M]<<endl;
	return 0;
}

참고

https://ongveloper.tistory.com/272

profile
반갑습니다

0개의 댓글