01-09 04:37
Recent Posts
Recent Comments
๊ด€๋ฆฌ ๋ฉ”๋‰ด

miinsun

[BAEKJOON] ๋ฐฑ์ค€ ๋™์  ๊ณ„ํš๋ฒ•1 10844 :: ์‰ฌ์šด ๊ณ„๋‹จ ์ˆ˜ ๋ณธ๋ฌธ

Algorithm/Baekjoon

[BAEKJOON] ๋ฐฑ์ค€ ๋™์  ๊ณ„ํš๋ฒ•1 10844 :: ์‰ฌ์šด ๊ณ„๋‹จ ์ˆ˜

miinsun 2022. 4. 13. 00:59

๐Ÿ’ฌ  ๋ฌธ์ œ ์„ค๋ช…

45656์ด๋ž€ ์ˆ˜๋ฅผ ๋ณด์ž. ์ด ์ˆ˜๋Š” ์ธ์ ‘ํ•œ ๋ชจ๋“  ์ž๋ฆฌ์˜ ์ฐจ์ด๊ฐ€ 1์ด๋‹ค. ์ด๋Ÿฐ ์ˆ˜๋ฅผ ๊ณ„๋‹จ ์ˆ˜๋ผ๊ณ  ํ•œ๋‹ค.
N์ด ์ฃผ์–ด์งˆ ๋•Œ, ๊ธธ์ด๊ฐ€ N์ธ ๊ณ„๋‹จ ์ˆ˜๊ฐ€ ์ด ๋ช‡ ๊ฐœ ์žˆ๋Š”์ง€ ๊ตฌํ•ด๋ณด์ž. 0์œผ๋กœ ์‹œ์ž‘ํ•˜๋Š” ์ˆ˜๋Š” ๊ณ„๋‹จ์ˆ˜๊ฐ€ ์•„๋‹ˆ๋‹ค.

 

๐Ÿ”จ  ์ž…์ถœ๋ ฅ ์˜ˆ

์ž…๋ ฅ 

  • ์ฒซ์งธ ์ค„์— N์ด ์ฃผ์–ด์ง„๋‹ค. N์€ 1๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™๊ณ , 100๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ์ž์—ฐ์ˆ˜์ด๋‹ค.
 
 

์ถœ๋ ฅ

  • ์ฒซ์งธ ์ค„์— ์ •๋‹ต์„ 1,000,000,000์œผ๋กœ ๋‚˜๋ˆˆ ๋‚˜๋จธ์ง€๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.

     

์˜ˆ์ œ ์ž…๋ ฅ 1)

1

 

์˜ˆ์ œ ์ถœ๋ ฅ 1)

9

 

์˜ˆ์ œ ์ž…๋ ฅ 2)

2

 

์˜ˆ์ œ ์ถœ๋ ฅ 2)

17

โ€‹

โ€‹

๐Ÿ’ป  Main.java

  • ์ด์ฐจ์› ๋ฐฐ์—ด dy์— [๊ณ„๋‹จ์ˆ˜][ํ˜„์žฌ ๊ณ„๋‹จ]์œผ๋กœ ์ •๋ณด๋ฅผ ์ €์žฅํ•ด์ค€๋‹ค.
  • ๊ณ„์‚ฐํ•œ ๋ชจ๋“  ๊ฐ’์„ 1,000,000,000์œผ๋กœ ๋‚˜๋ˆ ์ค€๋‹ค.
  • ๊ณ„๋‹จ์ด '0'์ผ๋•Œ๋Š” '1'๋ฐ–์— ์˜ค์ง€ ๋ชปํ•œ๋‹ค.
  • ๊ณ„๋‹จ์ด '9'์ผ๋•Œ๋Š” '8'๋ฐ–์— ์˜ค์ง€ ๋ชปํ•œ๋‹ค.
  • ๊ณ„๋‹จ์ด 1~8์ด๋ฉด ์•ž๋’ค๋กœ i+1, i-1์˜ ๊ณ„๋‹จ์ด ์˜ฌ ์ˆ˜ ์žˆ๋‹ค.
/* ๋ฐฑ์ค€ DP - 10844 :: ์˜ค๋ฅด๋ง‰ ์ˆ˜ */
import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		// dy[๊ณ„๋‹จ ์ˆ˜][ํ˜„์žฌ ๊ณ„๋‹จ]
		long[][] dy = new long[n + 1][10];
		
		for(int i = 1; i < 10; i++) {
			dy[1][i] = 1;
		}
		
		// ๋‘๋ฒˆ์ฉจ ์ž๋ฆฟ์ˆ˜๋ถ€ํ„ฐ ํƒ์ƒ‰
		for(int i = 2; i <= n; i++) {
			// i๋ฒˆ์งธ ์ž๋ฆฟ์ˆ˜์˜ ๊ฐ€๋ฆฟ๊ฐ’๋“ค์„ ํƒ์ƒ‰ (0 ~ 9)
			for(int j = 0; j < 10; j++) {
				//	ใ…“=0, ์ž๋ฆฟ๊ฐ’์ด 0์ด๋ฉด, ์ด์ „ ์ž๋ฆฟ์ˆ˜์˜ ์ฒซ๋ฒˆ์จ” ์ž๋ฆฟ์ˆ˜๋งŒ ๊ฐ€๋Šฅ
				if(j == 0)
					dy[i][j] = dy[i - 1][1] % 1000000000;
				else if(j == 9)
					dy[i][j] = dy[i - 1][8] % 1000000000;
				else
					dy[i][j] = (dy[i - 1][j + 1] + dy[i - 1][j - 1]) % 1000000000;
			}
		}
		
		long total = 0;
		for(int i = 0; i < 10; i++)
			total += dy[n][i];
		
		System.out.println(total % 1000000000);
		
		sc.close();
	} 
}
Comments