- Today
- Total
- leetcode
- ๋ฌธ๋ฒ
- ์๋ฐ
- Algorithm
- pytorch
- ์๋ฐ์์ ์
- ๋ฐ์ดํฐ๋ฒ ์ด์ค
- MST
- ๊ทธ๋ฆฌ๋
- ๋ฐฑ์๋
- ์ธํด
- OOP
- dp
- ์๋ฃ๊ตฌ์กฐ
- Graph
- ๋ฐฑ์ค
- ๋ฒจ๋งํฌ๋
- PS
- database
- ์กธ์ ์ํ
- ํ๋ก๊ทธ๋๋จธ์ค
- tree
- CS
- ๊ตฌํ
- array
- spring
- java
- ์์์ ๋ ฌ
- BFS
- ๋ค์ต์คํธ๋ผ
Partially Committed
[๋ฐฑ์ค 1947] ์ ๋ฌผ ์ ๋ฌ (JAVA) ๋ณธ๋ฌธ
https://www.acmicpc.net/problem/1947
1947๋ฒ: ์ ๋ฌผ ์ ๋ฌ
๊ฒฝ์ฐ์ ์๋ฅผ 1,000,000,000์ผ๋ก ๋๋ ๋๋จธ์ง๋ฅผ ์ฒซ์งธ ์ค์ ์ถ๋ ฅํ๋ค.
www.acmicpc.net
n ๋ช ์ ์ฌ๋์ด ์๋ก์ ์ ๋ฌผ์ ๊ตํํ๋๋ฐ, ์๊ธฐ์ ์ ๋ฌผ์ ์๊ธฐ ์์ ์ด ๋ฐ์ผ๋ฉด ์๋๋ค.
์ด๋ฌํ ์ํฉ์ ์์ ์์ด์ ์ดํดํ๊ณ ์์ผ๋ฉด ์ฝ๊ฒ ๊ตฌํ ์ ์๋ค.
https://namu.wiki/w/%EC%99%84%EC%A0%84%EC%88%9C%EC%97%B4
์์ ์์ด - ๋๋ฌด์ํค
์์ ์์ด์ ๋ค๋ฃจ๋ ๋ฌธ์ ์์๋, ๊ทธ๋ฅ D5D_5D5โ๊น์ง๋ ์ธ์๋์. ์ฐจ๋ก๋๋ก 0,1,2,9,440, 1, 2, 9, 440,1,2,9,44์ด๋ค. D5=44D_5=44D5โ=44๋ง์ ๋ ๋๋ฌด ๋ง๋ค๊ณ ํ์ฌ ์ ๋์ค์ง ์์ผ๋ฉฐ D6=265D_6=265D6โ=265๋ถํฐ๋ ๊ฒฝ์ฐ
namu.wiki
์ฐจ๊ทผ ์ฐจ๊ทผ ์ ํ์์ ๋ ์ฌ๋ ค๋ณด์.
dp[n] ์ n ๋ช ์ ์ฌ๋์ด ์์ ๋, ๋ชจ์๋ฅผ ๊ตํํ ์ ์๋ ๊ฒฝ์ฐ์ ์๋ผ๊ณ ๊ฐ์ ํ์.
์ฌ๋์ด 0๋ช ์ด๊ฑฐ๋ 1 ๋ช ์ธ ๊ฒฝ์ฐ์๋ ๋น์ฐํ dp[n] = 0 ์ด๋ค.
์ฌ๋์ด 2 ๋ช ์ด๋ผ๋ฉด dp[n] = 1 ์ด๋ค. ์๋ก๊ฐ ์๋ก์ ๋ชจ์๋ฅผ ๋ฐ๋ ๊ฒฝ์ฐ๋ฐ์ ์๋ค.
n ๋ช ์ด๋ผ๊ณ ์๊ฐํ์ ๋, ๊ทธ ์ค 2๋ช (a,b)์ ํน์ ์ง์ด์ ์๊ฐํด๋ณด์.
a ๋ b ์๊ฒ ์ ๋ฌผ์ ์ฃผ์๋ค๊ณ ๊ฐ์ ํ๊ณ ,
b ๊ฐ ์ ๋ฌผ์ ์ ๋ฌํ ์ ์๋ ๊ฒฝ์ฐ๋ ๋ ๊ฐ์ง ๋ฐ์ ์๋ค.
1. b ๋ a ์๊ฒ ์ฃผ๋ ๊ฒฝ์ฐ (์ด๋ฌ๋ฉด ์๋ฐฉํฅ์ผ๋ก ๊ตํํจ)
>> ๊ทธ๋ฌ๋ฉด n ๋ช ์ค์์ 2 ๋ช ์ด ๋ฐ๋ ์ ๋ฌผ์ ํ์ ๋ ๊ฒ์ด๋ค. ๊ทธ๋ฌ๋ฏ๋ก dp[n-2]
2. b ๋ a ๊ฐ ์๋ ๋ค๋ฅธ ์ฌ๋์๊ฒ ์ฃผ๋ ๊ฒฝ์ฐ
>> ๊ทธ๋ฌ๋ฉด b ๊ฐ ์ค ์ ๋ฌผ์ ๋ฐ์ ์ฌ๋์ ํ์ ๋์ง ์์๊ณ , b ๊ฐ a ๋ก๋ถํฐ ์ ๋ฌผ์ ๋ฐ๋๋ค๋ ๊ฒ๋ง ํ์ ๋๋ค. dp[n-1]
(*) ๋ค์ ๋์ ์ ๋ก ๋์๊ฐ์, n ๋ช ์ค์ a ์ b ๋ฅผ ์ ํํ๋ ์ํฉ์ ์๊ฐํด๋ณด์.
a ๋ ๊ณจ๋๋ค๊ณ ์น๋ฉด, b ๋ n-1 ๋ช ์ค์ 1๋ช ์ด ๋ ๊ฒ์ด๋ค. ์ฆ b ๋ฅผ ๊ณ ๋ฅด๋ ๊ฒฝ์ฐ์ ์๋ n-1 ์ด๋ค.
์ข ํฉํ๋ฉด dp[n] = (n-1)*(dp[n-1]+dp[n-2]) ์ ๊ฐ์ ์ ํ์์ ์ป์ ์ ์๊ณ ,
์ด๋ฅผ ์ฑ์๋ฃ์ผ๋ฉด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์๋ค.
โป ๋๋จธ์ง ์ฐ์ฐ์ ์ํํ ๋์๋, ํ ์ด๋ธ์ ๊ฐ์ ๋ฃ๊ธฐ ์ ์ ์ํํด์ผ ํ๋ค๋ ๊ฒ์ ์กฐ์ฌํ์. ์ค๋ฒํ๋ก์ฐ๊ฐ ๋ฐ์ํด๋ฒ๋ฆฌ๋ฉด ๊ฐ์ด ์๋ชป ์ ์ฅ๋๋๊น!
import java.io.FileInputStream;
import java.io.IOException;
import java.util.Scanner;
public class Main {
public static void main(String[] args) throws IOException {
System.setIn(new FileInputStream("src/input.txt"));
Scanner sc = new Scanner(System.in);
long mod = 1000000000;
int n = sc.nextInt();
long [] dp = new long[1000001];
dp[0] = 0;
dp[1] = 0;
dp[2] = 1;
for(int i = 3; i <= n; i++){
dp[i] = (i-1)*(dp[i-2]+dp[i-1])%mod;
}
System.out.println(dp[n]);
}
}

'๐ฅ Algorithm || ๋ฌธ์ ํ์ด > PS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค 2580/14888/13305/10844] JAVA (0) | 2023.02.13 |
---|---|
[๋ฐฑ์ค 1463] 1๋ก ๋ง๋ค๊ธฐ (JAVA) (0) | 2023.01.27 |
[๋ฐฑ์ค 1256] ์ฌ์ (JAVA) (0) | 2023.01.26 |
[๋ฐฑ์ค 1991] ํธ๋ฆฌ ์ํ (JAVA) (0) | 2023.01.22 |
[๋ฐฑ์ค 1068] ํธ๋ฆฌ (JAVA) (0) | 2023.01.22 |