๐ŸŒžAlgorithm/๐Ÿ”ฅBaekjoon

[Baekjoon] 10844_์‰ฌ์šด ๊ณ„๋‹จ ์ˆ˜

๋ฟŒ์•ผ._. 2026. 1. 14. 10:32
๋ฌธ์ œ(์ถœ์ฒ˜: https://www.acmicpc.net/problem/10844)

< ์‰ฌ์šด ๊ณ„๋‹จ ์ˆ˜ >

 

๋ฌธ์ œ ํ’€์ด 

 

์ž๋ฆฟ์ˆ˜๊ฐ€ ๋Š˜์–ด๋‚ ์ˆ˜๋ก ์ด์ „ ์ž๋ฆฟ์ˆ˜์˜ ์ƒํƒœ๋ฅผ ์ด์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ DP ์‚ฌ์šฉํ•œ๋‹ค.

 

my solution (Java)

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class _10844_ { // ์‰ฌ์šด ๊ณ„๋‹จ ์ˆ˜

	public static void main(String[] args) throws IOException {
		BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));

		int n = Integer.parseInt(bf.readLine());

		int dp[][] = new int[n + 1][10];

		for (int i = 1; i < 10; i++) {
			dp[1][i] = 1;
		}

		for (int i = 2; i < n + 1; i++) {
			for (int j = 0; j < 10; j++) {
				if (j != 9) {
					dp[i][j] = (dp[i][j] + dp[i - 1][j + 1]) % 1000000000;
				}
				if (j != 0) {
					dp[i][j] = (dp[i][j] + dp[i - 1][j - 1]) % 1000000000;
				}
			}
		}

		int result = 0;
		for (int i = 0; i < 10; i++) {
			result = (result + dp[n][i]) % 1000000000;
		}
		System.out.println(result);
	}
}
๋ณ€์ˆ˜)
n : ์ž…๋ ฅ๊ฐ’ 
dp : 1~N์ธ ๊ณ„๋‹จ ์ˆ˜
result : ๊ธธ์ด๊ฐ€ N์ธ ๊ณ„๋‹จ ์ˆ˜ 

 

n์„ ์ž…๋ ฅ๋ฐ›๋Š”๋‹ค. 1 ์ž๋ฆฟ์ˆ˜์ผ ๋•Œ๋Š” ๊ฐ ๊ฒฝ์šฐ์˜ ์ˆ˜๊ฐ€ 1๊ฐœ์ด๋ฏ€๋กœ dp[1][1~9]๋ฅผ 1๋กœ ์ดˆ๊ธฐํ™”ํ•œ๋‹ค. ๋‹ค์Œ ์ž๋ฆฟ์ˆ˜๋ถ€ํ„ฐ๋Š” ํ˜„์žฌ ๊ฐ’์˜ -1, +1์— ํ•ด๋‹นํ•˜๋Š” ๊ฐ’์„ ๋”ํ•ด์•ผ ํ•œ๋‹ค. ์ด๋•Œ, 0๊ณผ 9์ผ ๋•Œ๋ฅผ ์ฃผ์˜ํ•œ๋‹ค.  

 

์ตœ์ข… dp[n][0~9] ๊ฐ’์„ ๋”ํ•ด ์ถœ๋ ฅํ•œ๋‹ค.