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

miinsun

[BAEKJOON] ๋ฐฑ์ค€ ๋™์  ๊ณ„ํš๋ฒ•1 1003 :: ํ”ผ๋ณด๋‚˜์น˜ ํ•จ์ˆ˜ ๋ณธ๋ฌธ

Algorithm/Baekjoon

[BAEKJOON] ๋ฐฑ์ค€ ๋™์  ๊ณ„ํš๋ฒ•1 1003 :: ํ”ผ๋ณด๋‚˜์น˜ ํ•จ์ˆ˜

miinsun 2022. 4. 13. 01:18

 

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

๋‹ค์Œ ์†Œ์Šค๋Š” N๋ฒˆ์งธ ํ”ผ๋ณด๋‚˜์น˜ ์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” C++ ํ•จ์ˆ˜์ด๋‹ค.
fibonacci(3)์„ ํ˜ธ์ถœํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ผ์ด ์ผ์–ด๋‚œ๋‹ค.

* fibonacci(3)์€ fibonacci(2)์™€ fibonacci(1) (์ฒซ ๋ฒˆ์งธ ํ˜ธ์ถœ)์„ ํ˜ธ์ถœํ•œ๋‹ค.
* fibonacci(2)๋Š” fibonacci(1) (๋‘ ๋ฒˆ์งธ ํ˜ธ์ถœ)๊ณผ fibonacci(0)์„ ํ˜ธ์ถœํ•œ๋‹ค.
* ๋‘ ๋ฒˆ์งธ ํ˜ธ์ถœํ•œ fibonacci(1)์€ 1์„ ์ถœ๋ ฅํ•˜๊ณ  1์„ ๋ฆฌํ„ดํ•œ๋‹ค.
* fibonacci(0)์€ 0์„ ์ถœ๋ ฅํ•˜๊ณ , 0์„ ๋ฆฌํ„ดํ•œ๋‹ค.
* fibonacci(2)๋Š” fibonacci(1)๊ณผ fibonacci(0)์˜ ๊ฒฐ๊ณผ๋ฅผ ์–ป๊ณ , 1์„ ๋ฆฌํ„ดํ•œ๋‹ค.
* ์ฒซ ๋ฒˆ์งธ ํ˜ธ์ถœํ•œ fibonacci(1)์€ 1์„ ์ถœ๋ ฅํ•˜๊ณ , 1์„ ๋ฆฌํ„ดํ•œ๋‹ค.
* fibonacci(3)์€ fibonacci(2)์™€ fibonacci(1)์˜ ๊ฒฐ๊ณผ๋ฅผ ์–ป๊ณ , 2๋ฅผ ๋ฆฌํ„ดํ•œ๋‹ค.

1์€ 2๋ฒˆ ์ถœ๋ ฅ๋˜๊ณ , 0์€ 1๋ฒˆ ์ถœ๋ ฅ๋œ๋‹ค. N์ด ์ฃผ์–ด์กŒ์„ ๋•Œ, fibonacci(N)์„ ํ˜ธ์ถœํ–ˆ์„ ๋•Œ,
0๊ณผ 1์ด ๊ฐ๊ฐ ๋ช‡ ๋ฒˆ ์ถœ๋ ฅ๋˜๋Š”์ง€ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

 

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

์ž…๋ ฅ 

  • ์ฒซ์งธ ์ค„์— ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค์˜ ๊ฐœ์ˆ˜ T๊ฐ€ ์ฃผ์–ด์ง„๋‹ค.
  • ๊ฐ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋Š” ํ•œ ์ค„๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๊ณ , N์ด ์ฃผ์–ด์ง„๋‹ค. N์€ 40๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ์ž์—ฐ์ˆ˜ ๋˜๋Š” 0์ด๋‹ค.
 

์ถœ๋ ฅ

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

     

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

3
0
1
3

 

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

1 0
0 1
1 2

 

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

2
6
22

 

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

5 8
10946 17711

โ€‹

โ€‹

๐Ÿ’ป  Main.java

    • ์ด์ฐจ์› ๋ฐฐ์—ด dy์— [n ํ˜ธ์ถœ ์‹œ][0, 1์˜ ์ •๋ณด]๋ฅผ ์ €์žฅํ•ด์ค€๋‹ค.
    • ์ ํ™”์‹์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค
      • dy[n][0] += (dy[n-1][0] + dy[n-2][0]);
      • dy[n][1] += (dy[n-1][1] + dy[n-2][0]);
  •  
/* ๋ฐฑ์ค€ ๋™์  ๊ณ„ํš๋ฒ• 1 - 1003 :: ํ”ผ๋ณด๋‚˜์น˜ ํ•จ์ˆ˜ */
import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int t = sc.nextInt();
		
		for(int i = 0; i < t; i++) {
			int n = sc.nextInt();
			// dy[n][0, 1], ํ”ผ๋ณด๋‚˜์น˜ n์„ ํ˜ธ์ถœํ–ˆ์„๋•Œ, 0๊ณผ 1์˜ ์ˆ˜
			int[][] dy = new int[n + 1][2];
			
			if(n >= 0)
				dy[0][0] = 1;
			if(n >= 1)
				dy[1][1] = 1;
			
			for(int j = 2; j <= n; j++) {
				// 0 ํ˜ธ์ถœ ๊ณ„์‚ฐ
				dy[j][0] += (dy[j-1][0] + dy[j-2][0]);
				// 1 ํ˜ธ์ถœ ๊ณ„์‚ฐ
				dy[j][1] += (dy[j-1][1] + dy[j-2][1]);
			}
			
			System.out.println(dy[n][0] + " " + dy[n][1]);
		}
		
		sc.close();
	} 
}
Comments