[Algorithm] ๐ŸŽ‹๋ฐฑ์ค€ 10870 ํ”ผ๋ณด๋‚˜์น˜์ˆ˜ 5

HaJingJingยท2021๋…„ 6์›” 20์ผ
0

Algorithm

๋ชฉ๋ก ๋ณด๊ธฐ
76/119

0. ๋ฌธ์ œ

ํ”ผ๋ณด๋‚˜์น˜ ์ˆ˜๋Š” 0๊ณผ 1๋กœ ์‹œ์ž‘ํ•œ๋‹ค. 0๋ฒˆ์งธ ํ”ผ๋ณด๋‚˜์น˜ ์ˆ˜๋Š” 0์ด๊ณ , 1๋ฒˆ์งธ ํ”ผ๋ณด๋‚˜์น˜ ์ˆ˜๋Š” 1์ด๋‹ค. ๊ทธ ๋‹ค์Œ 2๋ฒˆ์งธ ๋ถ€ํ„ฐ๋Š” ๋ฐ”๋กœ ์•ž ๋‘ ํ”ผ๋ณด๋‚˜์น˜ ์ˆ˜์˜ ํ•ฉ์ด ๋œ๋‹ค.

์ด๋ฅผ ์‹์œผ๋กœ ์จ๋ณด๋ฉด Fn = Fn-1 + Fn-2 (n โ‰ฅ 2)๊ฐ€ ๋œ๋‹ค.

n=17์ผ๋•Œ ๊นŒ์ง€ ํ”ผ๋ณด๋‚˜์น˜ ์ˆ˜๋ฅผ ์จ๋ณด๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597

n์ด ์ฃผ์–ด์กŒ์„ ๋•Œ, n๋ฒˆ์งธ ํ”ผ๋ณด๋‚˜์น˜ ์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

์ž…๋ ฅ
์ฒซ์งธ ์ค„์— n์ด ์ฃผ์–ด์ง„๋‹ค. n์€ 20๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ์ž์—ฐ์ˆ˜ ๋˜๋Š” 0์ด๋‹ค.

์ถœ๋ ฅ
์ฒซ์งธ ์ค„์— n๋ฒˆ์งธ ํ”ผ๋ณด๋‚˜์น˜ ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.

1. ์•„์ด๋””์–ด

๐Ÿ’ก dp ์ด์šฉํ•˜์—ฌ n๋ฒˆ์งธ ๋‚˜์˜ค๋Š” ์ˆ˜์—ด ๊ตฌํ•˜๊ธฐ
๐Ÿ’ก n์ด 0์ผ ๊ฒฝ์šฐ ๊ณ ๋ คํ•˜๊ธฐ

2. ํ•ต์‹ฌ ํ’€์ด

  1. dp ์ด์šฉํ•˜์—ฌ n๋ฒˆ์งธ ๋‚˜์˜ค๋Š” ์ˆ˜์—ด ๊ตฌํ•˜๊ธฐ
int[] dp = new int[n + 1];

		...
		
for (int i = 2; i < n + 1; i++)
	dp[i] = dp[i - 1] + dp[i - 2];
  1. n์ด 0์ผ ๊ฒฝ์šฐ ๊ณ ๋ คํ•˜๊ธฐ
if (n != 0)
	dp[1] = 1;

3. ์ฝ”๋“œ

import java.io.BufferedReader;
import java.io.InputStreamReader;

public class DP_13 {
	public static void main(String[] args) throws Exception {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		int n = Integer.parseInt(br.readLine());

		int[] dp = new int[n + 1];

		if (n != 0)
			dp[1] = 1;

		for (int i = 2; i < n + 1; i++)
			dp[i] = dp[i - 1] + dp[i - 2];

		System.out.println(dp[n]);

	}

}

4. ๊ฒฐ๊ณผ

์„ฑ๊ณตโœจ

profile
๐ŸŒฑ์ดˆ๋ณด ๊ฐœ๋ฐœ์ž๐ŸŒฑ

0๊ฐœ์˜ ๋Œ“๊ธ€