[9461๋ฒˆ] ํŒŒ๋„๋ฐ˜ ์ˆ˜์—ด JAVAโ˜•

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

www.acmicpc.net/problem/9461

 

9461๋ฒˆ: ํŒŒ๋„๋ฐ˜ ์ˆ˜์—ด

์˜ค๋ฅธ์ชฝ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์ด ์‚ผ๊ฐํ˜•์ด ๋‚˜์„  ๋ชจ์–‘์œผ๋กœ ๋†“์—ฌ์ ธ ์žˆ๋‹ค. ์ฒซ ์‚ผ๊ฐํ˜•์€ ์ •์‚ผ๊ฐํ˜•์œผ๋กœ ๋ณ€์˜ ๊ธธ์ด๋Š” 1์ด๋‹ค. ๊ทธ ๋‹ค์Œ์—๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ณผ์ •์œผ๋กœ ์ •์‚ผ๊ฐํ˜•์„ ๊ณ„์† ์ถ”๊ฐ€ํ•œ๋‹ค. ๋‚˜์„ ์—์„œ ๊ฐ€์žฅ ๊ธด ๋ณ€์˜

www.acmicpc.net

์•Œ๊ณ ๋ฆฌ์ฆ˜ [์ ‘๊ทผ ๋ฐฉ๋ฒ•]

์ด๋ฒˆ ๋ฌธ์ œ๋Š” ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๊ฐ€ ์—ฌ๋Ÿฌ๊ฐœ์ด๋ฏ€๋กœ ๊ฐ ์ผ€์ด์Šค๋งˆ๋‹ค ๋™์ ๊ณ„ํš๋ฒ•์„ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค.

 

์˜ˆ๋ฅผ๋“ค์–ด Func()ํ•จ์ˆ˜๊ฐ€ ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•œ๋‹ค๋ฉด, ์ด ํ•จ์ˆ˜๋Š” Func(N) = Func(N-1) + Func(N-2)๋ฅผ ๋งŒ์กฑํ•˜๋Š” ํ”ผ๋ณด๋‚˜์น˜ ์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” ๊ธฐ๋Šฅ์„ ๋‹ด๋‹นํ•œ๋‹ค. ์ด ๋•Œ N=4์— ๋Œ€ํ•˜์—ฌ ๊ฐ’์„ ๊ตฌํ•˜๊ณ ์ž ํ•˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™์€ ๊ณผ์ •์„ ๊ฑฐ์น  ๊ฒƒ์ด๋‹ค.

 

  • Func(4) = Func(3) + Func(2)
  • Func(4) =  (Func(2) + Func(1)) + Func(2)

์ด๋Ÿฌ๋ฉด ์ ์–ด๋„ ์ตœ์†Œํ•œ N= 1~4 ๊นŒ์ง€๋Š” ํƒ์ƒ‰์ด ์™„๋ฃŒ๋˜์–ด ๊ฐ’์„ ์ฐพ๊ณ  ์žˆ์„ ๊ฒƒ์ด๋‹ค.  ๋งŒ์•ฝ ์ดํ›„์˜ N์ด 4๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์œผ๋ฉด ์ด๋ฏธ ํƒ์ƒ‰์ด ์™„๋ฃŒ๋˜์—ˆ๋˜ ๊ฐ’์ด๋ฏ€๋กœ ํƒ์ƒ‰ํ•  ๋•Œ ์–ป์—ˆ๋˜ ๊ฐ’์„ ๋ฐ”๋กœ ๋ฐ˜ํ™˜ํ•ด์ฃผ๋ฉด ๋œ๋‹ค. ๋ฐ˜๋Œ€๋กœ N=7 ๊ฐ™์ด 4๋ณด๋‹ค ํฐ ์ˆ˜๋ฅผ ํƒ์ƒ‰ํ•˜๊ฒŒ ๋˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํƒ์ƒ‰์„ ๊ฑฐ์น˜๋ฉด ๋œ๋‹ค.

 

  • Func(7) = Func(6) + Func(5) 
  • Func(7) =  (Func(5) + Func(4)) + (Func(4) + Func(3))
  • Func(7) =  ((Func(4) + Func(3)) + Func(4)) + (Func(4) + Func(3))

์ด ์„ธ๊ฐ€์ง€ ๊ณผ์ •๋งŒ ๊ฑฐ์น˜๋ฉด 4์™€ 3์— ๋Œ€ํ•ด ํ˜ธ์ถœํ•  ๋•Œ ์ด๋ฏธ ํƒ์ƒ‰ํ–ˆ๋˜ ๊ฐ’์ด๋ฏ€๋กœ ์—ฌ๊ธฐ๊นŒ์ง€๋งŒ ํƒ์ƒ‰ํ•œ ๋’ค ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜๋ฉด ๋œ๋‹ค. ์ด๋ ‡๊ฒŒํ•˜๋ฉด, ์ฃผ์–ด์ง€๋Š” N์˜ ๋ฒ”์œ„๊ฐ€ 1 ≤ N ≤ 100 ์ด๋”๋ผ๋„ ๋งŒ์•ฝ ์ฃผ์–ด์ง€๋Š” ์ˆ˜์˜ ์ตœ๋Œ€๊ฐ’์ด 10์ธ ๊ฒฝ์šฐ๋„ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— 11~100๊นŒ์ง€ ํƒ์ƒ‰ํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ์ฆ‰, ์ฒ˜์Œ๋ถ€ํ„ฐ ๋ชจ๋“  ๊ฐ’์„ ๊ตฌํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค๋Š” ์ƒํ™ฉ์— ๋งž๊ฒŒ ํ•„์š”ํ•œ ๋ถ€๋ถ„๋งŒ ํƒ์ƒ‰์„ ํ•ด์ฃผ๋Š” ๊ฒƒ์ด๋‹ค.


์ด์ œ ํŒŒ๋„๋ฐ˜ ์ˆ˜์—ด์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์ž๋ฉด,

P(1)๋ถ€ํ„ฐ P(10)๊นŒ์ง€ ์ฒซ 10๊ฐœ ์ˆซ์ž๋Š” 1,1,1,2,2,3,4,5,7,9 ์ด๋‹ค. ๋ผ๋Š” ์กฐ๊ฑด์—์„œ ๋ณด๋ฉด ์‰ฝ๊ฒŒ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋ฆผ์œผ๋กœ ๋ณด์ž๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

์ฆ‰, ํ”ผ๋ณด๋‚˜์น˜์™€๋Š” ์กฐ๊ธˆ ๋‹ค๋ฅธ ์ ์ด๋ผ๋ฉด ๋‘ ์ธ์ ‘ ๊ฐ’์˜ ํ•ฉ์ด ๋‹ค์Œ ์ธ๋ฑ์Šค์— ์œ„์น˜ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹Œ ๋‹ค๋‹ค์Œ์˜ ์ธ๋ฑ์Šค์— ์œ„์น˜ํ•œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

์ˆ˜์‹์œผ๋กœ ๋ณด์ž๋ฉด Func(N) = Func(N-2) + Func(N-3)์ด๋‹ค.

ํŒŒ๋„๋ฐ˜ ์ˆ˜์—ด์˜ ๊ฒฝ์šฐ, 100์ผ ๋•Œ์˜ ๊ฐ’์ด 9000์–ต ๊ฐ€๊นŒ์ด ๋˜๊ธฐ ๋•Œ๋ฌธ์— intํ˜•์˜ ๋ฒ”์œ„๋ฅผ ๋„˜์–ด๊ฐ„๋‹ค. ๊ทธ๋Ÿฌ๋ฏ€๋กœ long ํƒ€์ž…์œผ๋กœ ํ•ด์ฃผ์–ด์•ผ ํ•œ๋‹ค.
static long[] seq = new long[101];	// ๋ฐฐ์—ด ๋น„์–ด์žˆ๋Š” ํ‘œ์‹œ๋Š” -1 ์ด๋ผ๊ณ  ๊ฐ€์ •
 
seq[0] = 0;
seq[1] = 1;
seq[2] = 1;
seq[3] = 1;
 
long Padovan(int N) {
	if(seq[N] == -1) {	// ํ•ด๋‹น ๋ฐฐ์—ด์— ๊ฐ’์ด ์—†์„๊ฒฝ์šฐ ์žฌ๊ท€ํ˜ธ์ถœ
		seq[N] = Fib(N - 2) + Fib(N - 3);
 	}
	return seq[N];
}

๋˜๋Š” -1๋กœ ์ดˆ๊ธฐํ™” ํ•ด์ฃผ๋Š” ๋Œ€์‹  Long ํƒ€์ž… Wrapper Class๋กœ ํ•˜์—ฌ null ์ฒดํฌ๋กœ ํ•˜์ž๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด๋„ ํ•  ์ˆ˜ ์žˆ๋‹ค.

static Long[] seq = new Long[101];
 
seq[0] = 0L;
seq[1] = 1L;
seq[2] = 1L;
seq[3] = 1L;
 
long Padovan(int N) {
	if(seq[N] == null) {	// ํ•ด๋‹น ๋ฐฐ์—ด์— ๊ฐ’์ด ์—†์„๊ฒฝ์šฐ ์žฌ๊ท€ํ˜ธ์ถœ
		seq[N] = Fib(N - 2) + Fib(N - 3);
 	}
	return seq[N];
}

์ด ๋•Œ ๋ณ€์ˆ˜ ์ดˆ๊ธฐํ™” ์‹œ L์ด๋ผ๋Š” ๋ฌธ์ž๋ฅผ ๋ถ™์ด๊ฑฐ๋‚˜ (long) 1 ์ด๋Ÿฐ์‹์œผ๋กœ ์บ์ŠคํŒ…์„ ํ•ด์ฃผ์–ด์•ผํ•œ๋‹ค.


ํ’€์ด ๋ฐ ์ฝ”๋“œ

- ๋ฐฉ๋ฒ• 1 : [Scanner + ์žฌ๊ท€]

import java.util.Scanner;
 
public class Main {
	
	public static Long[] seq = new Long[101];
 
	public static void main(String[] args) {
		
		Scanner in = new Scanner(System.in);
		
		seq[0] = 0L;
		seq[1] = 1L;
		seq[2] = 1L;
		seq[3] = 1L;
		
		int T = in.nextInt();
		
		while(T-- > 0) {
			int N = in.nextInt();
			System.out.println(padovan(N));
		}
		
	}
	
	public static long padovan(int N) {
		if(seq[N] == null) {	// ํƒ์ƒ‰ํ•˜์ง€ ์•Š์€ ์ธ๋ฑ์Šค์ผ ๊ฒฝ์šฐ ์žฌ๊ท€ํ˜ธ์ถœ
			seq[N] = padovan(N - 2) + padovan(N - 3);
		}
		return seq[N];
	}
 
}

- ๋ฐฉ๋ฒ• 2 : [BufferedReader + ์žฌ๊ท€]

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
 
public class Main {
	
	public static Long[] seq = new Long[101];
 
	public static void main(String[] args) throws IOException {
		
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringBuilder sb = new StringBuilder();
		
		seq[0] = 0L;
		seq[1] = 1L;
		seq[2] = 1L;
		seq[3] = 1L;
		
		int T = Integer.parseInt(br.readLine());
		
		while(T-->0) {
			sb.append(padovan(Integer.parseInt(br.readLine()))).append('\n');
		}
		System.out.println(sb);
	}
	
	public static long padovan(int N) {
		if(seq[N] == null) {
			seq[N] = padovan(N - 2) + padovan(N - 3);
		}
		return seq[N];
	}
 
}

- ๋ฐฉ๋ฒ• 3 : [BufferedReader + ๋ฐ˜๋ณต๋ฌธ]

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
 
public class Main {
 
	static long[] seq = new long[101];
	
	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringBuilder sb = new StringBuilder();
		
		padovan();
		
		int T = Integer.parseInt(br.readLine());
		
		for (int i = 0; i < T; i++) {
			sb.append(seq[Integer.parseInt(br.readLine())]).append('\n');
		}
		
		System.out.println(sb);
	}
 
	public static void padovan() {
		
		seq[1] = 1;
		seq[2] = 1;
		seq[3] = 1;
 
		for (int i = 4; i < 101; i++) {
			seq[i] = seq[i - 2] + seq[i - 3];
		}
	}
 
}
728x90
์ €์ž‘์žํ‘œ์‹œ (์ƒˆ์ฐฝ์—ด๋ฆผ)
'๐Ÿ”ฐ ๋ฐฑ์ค€/๋™์ ๊ณ„ํš๋ฒ• 1' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [10844๋ฒˆ] ์‰ฌ์šด ๊ณ„๋‹จ ์ˆ˜ JAVAโ˜•
  • [1463๋ฒˆ] 1๋กœ ๋งŒ๋“ค๊ธฐ JAVAโ˜•
  • [9148๋ฒˆ] ์‹ ๋‚˜๋Š” ํ•จ์ˆ˜ ์‹คํ–‰ JAVAโ˜•
  • [1149๋ฒˆ] RGB๊ฑฐ๋ฆฌ 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)
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

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

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

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

  • ํƒœ๊ทธ

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

  • ์ตœ๊ทผ ๊ธ€

  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.3
juno1105
[9461๋ฒˆ] ํŒŒ๋„๋ฐ˜ ์ˆ˜์—ด JAVAโ˜•
์ƒ๋‹จ์œผ๋กœ

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