λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
μ•Œκ³ λ¦¬μ¦˜ 문제 풀이/DP

[λ°±μ€€] 11057번 : 였λ₯΄λ§‰ 수

by syLim___ 2023. 2. 10.
728x90

 

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

 

11057번: 였λ₯΄λ§‰ 수

였λ₯΄λ§‰ μˆ˜λŠ” 수의 μžλ¦¬κ°€ μ˜€λ¦„μ°¨μˆœμ„ μ΄λ£¨λŠ” 수λ₯Ό λ§ν•œλ‹€. μ΄λ•Œ, μΈμ ‘ν•œ μˆ˜κ°€ 같아도 μ˜€λ¦„μ°¨μˆœμœΌλ‘œ μΉœλ‹€. 예λ₯Ό λ“€μ–΄, 2234와 3678, 11119λŠ” 였λ₯΄λ§‰ μˆ˜μ΄μ§€λ§Œ, 2232, 3676, 91111은 였λ₯΄λ§‰ μˆ˜κ°€ μ•„λ‹ˆλ‹€. 수

www.acmicpc.net


 

DP 문제!!

 

쑰건에 따라 였λ₯΄λ§‰ 숫자의 개수λ₯Ό μ•„λž˜μ™€ 같이 계산해보면,

  0μœΌλ‘œλλ‚¨ 1λ‘œλλ‚¨ 2λ‘œλλ‚¨ 3μœΌλ‘œλλ‚¨ 4λ‘œλλ‚¨ 5λ‘œλλ‚¨ 6μœΌλ‘œλλ‚¨ 7λ‘œλλ‚¨ 8λ‘œλλ‚¨ 9λ‘œλλ‚¨
0 - - - - - - - - - -
1자리숫자 1 1 1 1 1 1 1 1 1 1
2자리숫자 1 2 3 4 5 6 7 8 9 10
3자리숫자 1 3 6 10 15 21 28 36 45 55

 

κ·œμΉ™μ΄ 보인닀!!

νŽΈμ˜μƒ 0행은 λΉ„μ›Œλ‘κ³  1ν–‰λΆ€ν„° 채웠닀.

 

i=1일 λ•Œ, 였λ₯΄λ§‰μˆ˜λŠ” μ „λΆ€ 1이닀.

 

i>=2일 λ•Œ, 0으둜 λλ‚˜λŠ” μˆ˜λŠ” 00, 000, 0000 ... μ΄λ―€λ‘œ, 무쑰건 1이닀.

λ‚˜λ¨Έμ§€μ˜ 경우, dp[i][j] = dp[i][j-1] + dp[i-1][j]μž„μ„ μ–΄λ ΅μ§€ μ•Šκ²Œ μ•Œ 수 μžˆλ‹€.

 

 

#include <iostream>

using namespace std;

int main(){
	int c = 10007;
	
	int n; cin>>n;
	int dp[n+1][10];	//ν–‰:1~10, μ—΄:0~9 
	
	for(int i=0;i<10;i++) dp[1][i]=1;
	
	for(int i=2;i<=n;i++){
		for(int j=0;j<10;j++){
			if(j==0) dp[i][j]=1;
			else {
				dp[i][j]=dp[i][j-1]+dp[i-1][j];
				dp[i][j] %= c;
			}
		}
	}
	
	int sum=0;
	for(int i=0;i<10;i++){
		sum += dp[n][i];
	}
	
	cout<< sum % c;
	
	return 0;
}

 

 

 

 

 

728x90