Notice
Recent Posts
Recent Comments
Today
Total
04-14 12:28
Link
๊ด€๋ฆฌ ๋ฉ”๋‰ด

Partially Committed

[๋ฐฑ์ค€ 1947] ์„ ๋ฌผ ์ „๋‹ฌ (JAVA) ๋ณธ๋ฌธ

๐Ÿ”ฅ Algorithm || ๋ฌธ์ œํ’€์ด/PS

[๋ฐฑ์ค€ 1947] ์„ ๋ฌผ ์ „๋‹ฌ (JAVA)

WonderJay 2023. 1. 27. 10:45
728x90
๋ฐ˜์‘ํ˜•
SMALL

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]);
    }
}

728x90
๋ฐ˜์‘ํ˜•
LIST