Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 동적계획법
- sql고득점kit
- 플로이드와샬
- vector
- 다익스트라
- 다이나믹프로그래밍
- substr
- MySQL
- dfs
- DP
- 리시프
- unordered_map
- set
- MAP
- 코테
- 알고리즘
- C++
- 참고 문헌 : MACHINE LEARNING 기계학습 _ 오일석
- 시스템콜
- 백준
- 코딩테스트연습
- String
- Dijkstra
- 코테준비
- 프로그래머스
- 정렬
- 스택
- 우선순위큐
- 문자열
- 최대공약수
Archives
- Today
- Total
YeJin's Footsteps
2407번: 조합 본문
문제 링크
https://www.acmicpc.net/problem/2407
2407번: 조합
n과 m이 주어진다. (5 ≤ n ≤ 100, 5 ≤ m ≤ 100, m ≤ n)
www.acmicpc.net
문제 풀이 코드
#include <iostream>
#include <string>
#include <algorithm>
#include <cstdio>
using namespace std;
const int MN = 101;
string dp[MN][MN];
string sumString(string a, string b){
long long sum = 0;
string ret;
while(a.size()||b.size()||sum){
if(a.size()){
sum+=a.back()-'0';//숫자로 변환
a.pop_back();
}
if(b.size()){
sum+=b.back()-'0';//숫자로 변환
b.pop_back();
}
ret.push_back((sum%10)+'0');//문자로 변환
sum/=10;
}
reverse(ret.begin(), ret.end());
return ret;
}
int main(void){
ios::sync_with_stdio(false); cin.tie(NULL);
long long N, M; cin>>N>>M;
for(int i=1; i<=N; i++){
for(int j=0; j<=i; j++){
if(j==0||i==j) dp[i][j]="1";
else dp[i][j] = sumString(dp[i-1][j-1],dp[i-1][j]);
}
}
cout<<dp[N][M];
return 0;
}
자신있게 long long int형 DP방식으로 풀었다가 자꾸 틀려서
정수형이 아닌 string 형으로 문제를 해결해야함을 깨달았다.
'Computer Science & Engineering > 알고리즘' 카테고리의 다른 글
2011번: 암호코드 (0) | 2021.08.07 |
---|---|
1890번: 점프 (0) | 2021.08.06 |
2 x n 타일링 (0) | 2021.07.31 |
문자열 압축 (0) | 2021.07.30 |
로또의 최고 순위와 최저 순위 (0) | 2021.07.30 |