[1003๋ฒˆ] ํ”ผ๋ณด๋‚˜์น˜ ํ•จ์ˆ˜ JAVAโ˜•

2022. 5. 5. 00:18ยท๐Ÿ”ฐ ๋ฐฑ์ค€/๋™์ ๊ณ„ํš๋ฒ• 1
728x90

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

 

1003๋ฒˆ: ํ”ผ๋ณด๋‚˜์น˜ ํ•จ์ˆ˜

๊ฐ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋งˆ๋‹ค 0์ด ์ถœ๋ ฅ๋˜๋Š” ํšŸ์ˆ˜์™€ 1์ด ์ถœ๋ ฅ๋˜๋Š” ํšŸ์ˆ˜๋ฅผ ๊ณต๋ฐฑ์œผ๋กœ ๊ตฌ๋ถ„ํ•ด์„œ ์ถœ๋ ฅํ•œ๋‹ค.

www.acmicpc.net


ํ’€์ด๋ฒ•

์ผ๋‹จ ์ด๋ฒˆ ๋ฌธ์ œ๋Š” ํ”ผ๋ณด๋‚˜์น˜ ์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ํ”ผ๋ณด๋‚˜์น˜ ์ˆ˜์—์„œ 0๊ณผ 1์ด ํ˜ธ์ถœ๋˜๋Š” ํšŸ์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” ๊ฒƒ์ด๋‹ค.
์ฝ”๋“œ๋กœ๋Š” N์ด ์ตœ๋Œ€ 40๊นŒ์ง€ ์ฃผ์–ด์ง€๊ณ , ๊ฐ N์— 0๊ณผ 1์ด ํ˜ธ์ถœ๋œ ํšŸ์ˆ˜๋ฅผ ๋‹ด์•„์•ผ ํ•˜๋ฏ€๋กœ 2์ฐจ์› ๋ฐฐ์—ด์ด ํ•„์š”ํ•˜๋‹ค.
(๋˜ํ•œ null ์ฒดํฌ๋ฅผํ•˜๊ธฐ ์œ„ํ•ด์„œ int[][] ๊ฐ€ ์•„๋‹Œ Integer[][]๋กœ ์‚ฌ์šฉํ•œ๋‹ค.)

DP๋ผ๋Š” ๋ฐฐ์—ด์„ ์„ ์–ธํ•˜๊ณ , ํ”ผ๋ณด๋‚˜์น˜ ํ•จ์ˆ˜๋Š” ๊ฐ N์— ๋Œ€ํ•œ 0๊ณผ 1์˜ ๊ฐ’์„ DP์— ์ €์žฅํ•˜๋ฉด์„œ ์žฌ๊ท€ํ˜ธ์ถœ์„ ์ง„ํ–‰ํ•œ๋‹ค.

N์— ๋Œ€ํ•œ 0๊ณผ 1์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ทœ์น™์„ ๋”ฐ๋ฅธ๋‹ค.
1. N์— ๋Œ€ํ•œ 0ํ˜ธ์ถœ ํšŸ์ˆ˜ = N-1์˜ 1 ํ˜ธ์ถœ ํšŸ์ˆ˜
2. N์— ๋Œ€ํ•œ 1ํ˜ธ์ถœ ํšŸ์ˆ˜  = (N-1์˜ 0 ํ˜ธ์ถœํšŸ์ˆ˜) + (N-1์˜ 1 ํ˜ธ์ถœ ํšŸ์ˆ˜)

์œ„ ์„ค๋ช…์„ ์ฝ”๋“œ๋กœ ๋ณด๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

1
2
3
4
5
6
7
8
9
10
// ๊ธฐ๋ณธ ๊ฐ’(N=0์ผ ๋•Œ)
int zero = 1;
int one = 0;
int zero_plus_one = 1;
 
for (int i = 0; i < N; i++) {
    zero = one;    // 0ํ˜ธ์ถœ ํšŸ์ˆ˜๋ฅผ ์ด์ „์˜ 1ํ˜ธ์ถœ ํšŸ์ˆ˜๋กœ ๋ณ€๊ฒฝ
    one = zero_plus_one;    // 1ํ˜ธ์ถœ ํšŸ์ˆ˜๋ฅผ ์ด์ „์˜ 0๊ณผ 1ํ˜ธ์ถœ ํšŸ์ˆ˜์˜ ํ•ฉ์œผ๋กœ ๋ณ€๊ฒฝ
    zero_plus_one = zero + one;    // 0๊ณผ 1 ํ˜ธ์ถœ์˜ ํ•ฉ ๊ณ„์‚ฐ
}
Colored by Color Scripter
cs

์žฌ๊ท€์ ์œผ๋กœ ๊ตฌํ˜„ํ•œ ์ฝ”๋“œ

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
package com.linerate;
import java.util.Scanner;
public class Main {
    static Integer[][] dp = new Integer[41][2];
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        dp[0][0] = 1;    // N=0 ์ผ ๋•Œ์˜ 0 ํ˜ธ์ถœ ํšŸ์ˆ˜
        dp[0][1] = 0;    // N=0 ์ผ ๋•Œ์˜ 1 ํ˜ธ์ถœ ํšŸ์ˆ˜
        dp[1][0] = 0;    // N=1 ์ผ ๋•Œ์˜ 0 ํ˜ธ์ถœ ํšŸ์ˆ˜
        dp[1][1] = 1;    // N=1 ์ผ ๋•Œ์˜ 1 ํ˜ธ์ถœ ํšŸ์ˆ˜
        int T = in.nextInt();
        while(T-- > 0){
            int N = in.nextInt();
            fibonacci(N);
            System.out.println(dp[N][0] + " " + dp[N][1]);
        }
    }
    static Integer[] fibonacci(int N) {
        // N์— ๋Œ€ํ•œ 0, 1์˜ ํ˜ธ์ถœ ํšŸ์ˆ˜๊ฐ€ ์—†์„ ๋–„(ํƒ์ƒ‰ํ•˜์ง€ ์•Š์€ ๊ฐ’์ผ ๋•Œ)
        if(dp[N][0] == null || dp[N][1] == null) {
            // ๊ฐ N์— ๋Œ€ํ•œ 0 ํ˜ธ์ถœ ํšŸ์ˆ˜์™€ 1 ํ˜ธ์ถœ ํšŸ์ˆ˜๋ฅผ ์žฌ๊ท€ํ˜ธ์ถœํ•œ๋‹ค.
            dp[N][0] = fibonacci(N - 1)[0] + fibonacci(N - 2)[0];
            dp[N][1] = fibonacci(N - 1)[1] + fibonacci(N - 2)[1];
        }
        // N์— ๋Œ€ํ•œ 0๊ณผ 1, ์ฆ‰ [N][0]๊ณผ [N][1] ์„ ๋‹ด๊ณ ์žˆ๋Š” [N]์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
        return dp[N];
    }
}
Colored by Color Scripter
cs

 

 

728x90
์ €์ž‘์žํ‘œ์‹œ (์ƒˆ์ฐฝ์—ด๋ฆผ)
'๐Ÿ”ฐ ๋ฐฑ์ค€/๋™์ ๊ณ„ํš๋ฒ• 1' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [1149๋ฒˆ] RGB๊ฑฐ๋ฆฌ JAVAโ˜•
  • [2579๋ฒˆ] ๊ณ„๋‹จ ์˜ค๋ฅด๊ธฐ JAVAโ˜•
  • [1932๋ฒˆ] ์ •์ˆ˜ ์‚ผ๊ฐํ˜• JAVAโ˜•
  • [1904๋ฒˆ] 01ํƒ€์ผ JAVAโ˜•
juno1105
juno1105
๊ณต๋ถ€ํ•˜๋Š” ๊ฒธ ํฌํด ๋ธ”๋กœ๊ทธ
  • juno1105
    @juno1105
    juno1105
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (89)
      • ๐Ÿ’ฌ ์ž์œ  (3)
      • ๐Ÿ“– ์–ดํ•™ ๊ณต๋ถ€ (0)
      • ๐Ÿ“” ๊ฐœ๋ฐœ ํ”„๋กœ์ ํŠธ (4)
      • ๐Ÿ›  ํ”„๋กœ๊ทธ๋žจ ์˜ค๋ฅ˜ ํ•ด๊ฒฐ๋ฒ• (1)
      • ๐Ÿ“š ์ž๋ฃŒ๊ตฌ์กฐ ๋ฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜ (53)
        • ์Šคํƒ (4)
        • ํ (4)
        • ์ •๋ ฌ ๋ฐ ํƒ์ƒ‰ (17)
        • ๋ฆฌ์ŠคํŠธ (5)
        • ํ•ด์‹œ (1)
        • ํŠธ๋ฆฌ (8)
        • ํž™ (2)
        • ๊ทธ๋ž˜ํ”„ (12)
      • ๐Ÿ’ป ์ปดํ“จํ„ฐ ๊ตฌ์กฐ (0)
      • ๐Ÿšฅ ๋…ผ๋ฆฌํšŒ๋กœ (8)
      • ๐Ÿ”ฐ ๋ฐฑ์ค€ (20)
        • ํ, ์Šคํƒ, ๋ฑ (0)
        • DFS ์™€ BFS (3)
        • ๊ทธ๋ฆฌ๋”” (0)
        • ๋™์ ๊ณ„ํš๋ฒ• 1 (16)
        • ๋™์ ๊ณ„ํš๋ฒ• 2 (0)
        • ์ตœ๋‹จ ๊ฒฝ๋กœ (0)
        • ํŠธ๋ฆฌ (0)
        • ๋ฐฑํŠธ๋ž˜ํ‚น (0)
        • ์œ ๋‹ˆ์˜จ ํŒŒ์ธ๋“œ (0)
        • ์ง‘ํ•ฉ๊ณผ ๋งต (1)
      • ๐ŸŒˆ ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค (0)
      • ๐Ÿ“ฑ ์•ˆ๋“œ๋กœ์ด๋“œ ์•ฑ (0)
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

    • ํ™ˆ
    • ํƒœ๊ทธ
    • ๋ฐฉ๋ช…๋ก
  • ๋งํฌ

  • ๊ณต์ง€์‚ฌํ•ญ

    • โœจ์ž๋ฃŒ๊ตฌ์กฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ปค๋ฆฌํ˜๋Ÿผโœจ
  • ์ธ๊ธฐ ๊ธ€

  • ํƒœ๊ทธ

    ํ† ์ต 920์ 
    ์•Œ๊ณ ๋ฆฌ์ฆ˜
    ํ† ์ต 900
    ์ •๋ ฌ ์ตœ์„ ์˜ ๊ฒฝ์šฐ
    ํ† ์ต 900์ 
    ์ •๋ ฌ
    ๊ทธ๋ž˜ํ”„ํƒ์ƒ‰
    ํ† ์ต 950์ 
    ํ† ์ต 910์ 
    ํ† ์ต 900์ ๋Œ€
    ์‹œ๊ฐ„๋ณต์žก๋„
    ์ •๋ ฌ ์ตœ์•…์˜ ๊ฒฝ์šฐ
    ํ† ์ต
    ๋น…์˜คํ‘œ๊ธฐ๋ฒ•
    ์ตœ๋‹จ๊ฒฝ๋กœ
  • ์ตœ๊ทผ ๋Œ“๊ธ€

  • ์ตœ๊ทผ ๊ธ€

  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.3
juno1105
[1003๋ฒˆ] ํ”ผ๋ณด๋‚˜์น˜ ํ•จ์ˆ˜ JAVAโ˜•
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”