๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
  • ์žฅ์›์ต ๊ธฐ์ˆ ๋ธ”๋กœ๊ทธ
๐Ÿ’ป Computer Science/- Data Structure, Algorithm

[์•Œ๊ณ ๋ฆฌ์ฆ˜ PS] ๋ฐฑ์ค€ 1003 ํ”ผ๋ณด๋‚˜์น˜ ํ•จ์ˆ˜ ์ž๋ฐ” ๋ฌธ์ œ ํ’€์ด

by Wonit 2021. 1. 23.

๋ฌธ์ œ

ํ•ด๋‹น ํฌ์ŠคํŒ…์€ ๋ฐฑ์ค€์˜ ๋ฌธ์ œ ์ด๋ฆ„ ์˜ ์ ‘๊ทผ๊ณผ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•œ ๊ธ€ ์ž…๋‹ˆ๋‹ค.
์ •๋‹ต ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ํ™•์ธํ•˜์‹œ๋ ค๋ฉด solve url ์—์„œ ํ™•์ธ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

๋ฌธ์ œ

์˜ˆ์ œ ์ž…๋ ฅ & ์ถœ๋ ฅ

 

ํ•ด๊ฒฐ๋ฒ•

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


์ฆ‰, ์šฐ๋ฆฌ๊ฐ€ ์ง€๋‚œ ์žฌ๊ท€ ํ˜ธ์ถœ ์ด๋ก  ์‹œ๊ฐ„์—์„œ ์ด์•ผ๊ธฐ ํ–ˆ๋˜ 0๊ณผ 1์˜ ์ค‘๋ณต์— ๋Œ€ํ•ด์„œ ์ƒ๊ฐํ•ด๋ณด์ž๋Š” ๋ฌธ์ œ๋กœ ๋ฐ›์•„๋“ค์ผ ์ˆ˜ ์žˆ๋‹ค.

 

๊ทผ๋ฐ ์กฐ๊ธˆ ์ƒ๊ฐ์„ ํ•ด๋ณด์•„์•ผ ํ•  ๊ฒƒ์ด ์‹œ๊ฐ„ ์ œํ•œ์ด 0.25์ดˆ๋กœ ์ฃผ์–ด์ง„๋‹ค.


์–ด๋–ค ์–ธ์–ด์ด๋˜ ๊ฐ„์— ์ถ”๊ฐ€ ์‹œ๊ฐ„์€ ์ฃผ์ง€ ์•Š๋Š”๋‹ค๊ณ  ํ•œ๋‹ค.


๊ทธ๋Ÿผ ์‚ฌ์‹ค์ƒ ์šฐ๋ฆฌ์˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด 1์ดˆ์— 400๋งŒ์˜ ์—ฐ์‚ฐ๋งŒ ์ปค๋ฒ„ํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ด์•ผ ํ•œ๋‹ค.


ํ”ผ๋ณด๋‚˜์น˜ ํ•จ์ˆ˜์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๋Š” ์ง€๋‚œ ํ”ผ๋ณด๋‚˜์น˜ ์ˆ˜5์—์„œ ์•Œ์•„๋ณด์•˜๋“ฏ, ํŠธ๋ฆฌ์˜ ํŠน์„ฑ์„ ๊ทธ๋Œ€๋กœ ์ด์–ด๋ฐ›์•„ 2์˜ n์ œ๊ณฑ์ด ๋œ๋‹ค๊ณ  ํ–ˆ๋‹ค.

 

๋ฌธ์ œ์—์„œ๋Š” n์ด 40๊นŒ์ง€ ์ฃผ์–ด์งˆ ์ˆ˜ ์žˆ๋‹ค๊ณ  ํ–ˆ์œผ๋‹ˆ 2์˜ 40์ œ๊ณฑ๊นŒ์ง€๋งŒ ์ปค๋ฒ„๋ฅผ ํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ํ–ˆ์„ ๋•Œ 2์˜ 10 _ 4๋ฅผ ํ•˜๋ฉด 1024 _ 4 ๋ฅผ ์ˆ˜ํ–‰ํ•˜๋ฉด 1์กฐ๊ฐ€ ๋‚˜์˜จ๋‹ค..

 

๊ทธ๋Ÿผ ์ ˆ๋Œ€๋กœ ์žฌ๊ท€ํ˜ธ์ถœ๋กœ ํ’€๋ฉด ํ•ด๋‹น ๋ฌธ์ œ๋Š” ํ†ต๊ณผํ•˜์ง€ ์•Š์œผ๋‹ˆ ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์„ ์ƒ๊ฐํ•ด์•ผ ํ•˜๋Š”๋ฐ, ์ด๋ ‡๊ฒŒ ์•„์ฃผ ๋งŽ์€ ์–‘์˜ ๋ฐ์ดํ„ฐ, ๋งŽ์€ ์–‘์˜ ๋ฌธ์ œ๋ฅผ ํ•œ ๋ฒˆ์— ํ•ด๊ฒฐํ•˜๊ธฐ ํž˜๋“ค ๋•Œ ์ž‘์€ ์—ฌ๋Ÿฌ ๋ฌธ์ œ๋กœ ๋‚˜๋ˆ„์–ด์„œ ํ‘ธ๋Š” ๋™์  ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ๋„์ž…ํ•  ์ˆ˜ ์žˆ๋‹ค.

์ ‘๊ทผ๋ฒ•

์šฐ๋ฆฌ๋Š” ํ”ผ๋ณด๋‚˜์น˜ ํ•จ์ˆ˜๋ฅผ ์ง์ ‘ ํ•˜๋‚˜ํ•˜๋‚˜ ๋‹ค ๊ตฌํ˜„ํ•˜์ง€ ์•Š๊ณ  ๊ฐ ์žฌ๊ท€ ํ˜ธ์ถœ์˜ ํŠน์„ฑ์„ ํŒŒ์•…ํ•ด์„œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ๊ฒƒ์ด๋‹ค.

 

๋‹ค์Œ๊ณผ ๊ฐ™์ด fibonacci ์žฌ๊ท€ ํ•จ์ˆ˜๊ฐ€ ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด๋ณด์ž.

int fibonacci(int n) {
  if(n == 0) {
    System.out.println("0");
    return 0;
  }else if(n ==0) {
    System.out.println("1");
    return 1;
  }else {
    return fibonacci(n-1) + fibonacci(n-2);
  }
}

๊ทธ๋Ÿผ ๊ฐ๊ฐ์˜ ์žฌ๊ท€ ํ˜ธ์ถœ์„ ์ˆ˜ํ–‰ํ•œ ๊ฒฐ๊ณผ 0๊ณผ 1์ด ์ถœ๋ ฅ๋˜๋Š” ํšŸ์ˆ˜๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

 

         0์˜ ์ถœ๋ ฅ   1์˜ ์ถœ๋ ฅ
fibo(0) =   1       0
fibo(1) =   0       1
fibo(2) =   1       1

๊ทธ๋Ÿผ fibo(3)์ผ ๋•Œ 0๊ณผ 1์ด ๋ช‡๋ฒˆ ์ถœ๋ ฅ ๋ ๊นŒ?


fibo(3)์€ fibo(1) + fibl(2) ์ด๋ฏ€๋กœ ๊ฐ๊ฐ์˜ ํšŸ์ˆ˜์—์„œ ์ถœ๋ ฅ๋œ 1๊ณผ 0์„ ์„œ๋กœ ๋”ํ•˜๋ฉด ๋˜์ง€ ์•Š์„๊นŒ?

 

๊ทธ๋ ‡๋‹ค. ์ด๊ฒƒ์ด ๋ฐ”๋กœ ํ•ต์‹ฌ์ด๋‹ค.


์ ํ™”์‹์œผ๋กœ ํ‘œํ˜„ํ•œ๋‹ค๋ฉด, ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

 

fibo[n][0] = fibo[n-1][0] + fibo[n-2][0];
fibo[n][1] = fibo[n-1][1] + fibo[n-2][1];

์ด์ œ ์ฝ”๋“œ๋กœ ์˜ฎ๊ฒจ๋ณด์ž.

์ •๋‹ต ์ฝ”๋“œ

import java.io.*;

public class Main {
  public static void main(String[] args) throws IOException{
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
    int t = Integer.parseInt(br.readLine());
    int[][] fibo = new int[41][2];
    fibo[0][0] = 1; fibo[0][1] = 0;
    fibo[1][0] = 0; fibo[1][1] = 1;

    while(t-- > 0) {
      int n = Integer.parseInt(br.readLine());
      if(n > 1) {
        for(int i = 2; i <= n; i++){
          fibo[i][0] = fibo[i-1][0] + fibo[i-2][0];
          fibo[i][1] = fibo[i-1][1] + fibo[i-2][1];
        }
      }
      bw.write(fibo[n][0] + " " + fibo[n][1] + "\n");
    }

    bw.flush();
    bw.close();
  }
}

์ •๋‹ต ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ํ™•์ธํ•˜์‹œ๋ ค๋ฉด solve url ์—์„œ ํ™•์ธ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

๋Œ“๊ธ€