발효홍삼
코딩하는 홍삼
발효홍삼
전체 방문자
오늘
어제
  • 분류 전체보기 (142)
    • PS (63)
      • 프로그래머스 (9)
      • 코드업 (10)
      • 백준 (43)
      • 알고스팟 (1)
    • Programming Language (11)
      • html_css (2)
      • java (0)
      • c,c++ (2)
      • vanillajs (2)
      • react (0)
      • vue.js (0)
      • angular.js (0)
      • electron (3)
      • 엄랭(Umjunsik-lang) (1)
      • F# (1)
      • Node.js (0)
      • Go (0)
    • knowledge (41)
      • algorithm (3)
      • data structure (1)
      • os (1)
      • ML (1)
      • math (31)
      • paper review (0)
      • IT-license (4)
    • Programming Guide (27)
      • React (1)
      • Electron (2)
      • CSS , SASS ( SCSS ) , Tailw.. (3)
      • Node.js (1)
      • Go (1)
      • Ruby on Rails (2)
      • R (1)
      • PHP (1)
      • Docker (1)
      • JSP (1)
      • C# (1)
      • Django (1)
      • Flask (1)
      • Dart (1)
      • Next.js (1)
      • Vue.js (1)
      • Unity (1)
      • React Native (0)
      • Flutter (3)
      • GraphQL (1)
      • MongoDB (1)
      • .NET (1)
      • RUST (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • codeup
  • 적분
  • 프로그래머스
  • java
  • 파이썬
  • c++
  • C
  • 정보처리기능사
  • 알고리즘
  • 정보처리기능사 필기
  • 미분
  • HTML
  • JavaScript
  • electron
  • cpp
  • 기초백제
  • nodejs
  • 자바
  • js
  • 백준
  • CSS
  • 이산수학
  • 미적분학
  • 기초100제
  • 수학
  • LV1
  • Python
  • 구현
  • 출력
  • 코드업

최근 댓글

최근 글

티스토리

250x250
hELLO · Designed By 정상우.
발효홍삼

코딩하는 홍삼

[백준] 1003번 : 피보나치 함수 - (c++, c, python/파이썬, java/자바)
PS/백준

[백준] 1003번 : 피보나치 함수 - (c++, c, python/파이썬, java/자바)

2022. 1. 28. 13:37
728x90
  • 문제

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

 

1003번: 피보나치 함수

각 테스트 케이스마다 0이 출력되는 횟수와 1이 출력되는 횟수를 공백으로 구분해서 출력한다.

www.acmicpc.net


  • 알고리즘 ( 접근 )

처음엔 문제에 나와있는대로 함수로 구하였지만, 시간초과가 났다.

이 문제는 dynamic programing ( 동적 계획법 ) 으로 풀 수 있다.

 

N 0의 출력 개수 1의 출력 개수
0 1 0
1 0 1
2 1 1
3 1 2
4 2 3
    이 표를 토대로 보면 0의 출력 개수는 DP[N-1]개, 1의 출력 개수는 DP[N]개라는 것을 알 수 있다.

  • 풀이 - C++( C )
더보기
더보기
#include <iostream>

using namespace std;

int dp[41] = { 0 , 1, 1 };

int main()
{
    int T, i, n;
    for (i = 3; i < 41; i++) dp[i] = dp[i - 1] + dp[i - 2];

    cin >> T;

    while (T--)
    {
        cin >> n;
        if (n == 0) cout << "1 0\n";
        else cout << dp[n - 1] << " " << dp[n] << "\n";

    }
}
#include <stdio.h>

int dp[41] = { 0 , 1, 1 };

int main()
{
    int T,i,n;
    for (i = 3; i < 41; i++) dp[i] = dp[i - 1] + dp[i - 2];

    scanf("%d", &T);
    
    while (T--)
    {
       
        scanf("%d", &n);
        if (n == 0) printf("%d %d\n", 1, 0);
        else printf("%d %d\n", dp[n - 1], dp[n]);

    }
}
  • 풀이 - JAVA
더보기
더보기
import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		
		int T = sc.nextInt();
		int[] dp = new int[41];
		
		dp[0] = 0;
		dp[1] = 1;
		dp[2] = 1;
		
		for(int i = 3; i < 41; i++)
			dp[i] = dp[i-1] + dp[i-2];
		
		while(T-->0)
		{
			int n = sc.nextInt();
			if(n == 0) System.out.println("1 0");
			else System.out.printf("%d %d%n", dp[n-1], dp[n]);
		}
	}
}
  • 풀이 - PYTHON
더보기
더보기
t = int(input())
dp = [0,1,1]

for i in range(3,41):
   dp.append(dp[i-1] + dp[i-2])


for i in range(t):
    n = int(input())
    if n == 0:
        print("1 0")
    else: print(dp[n-1], dp[n])

 

728x90
저작자표시 비영리 변경금지 (새창열림)

'PS > 백준' 카테고리의 다른 글

[ 백준 ] 1271번 : 엄청난 부자2 - (python/파이썬, java/자바)  (0) 2022.02.02
[ 백준 ] 1004번 : 어린 왕자 - (c++, c, python/파이썬, java/자바)  (0) 2022.01.28
[ 백준 ] 1002번 : 터렛 - (C++/C , JAVA/자바 , PYTHON/파이썬, Node.js/자바스크립트)  (0) 2022.01.28
[백준] 1001번 : A-B - (C++/C, JAVA/자바, PYTHON/파이썬, Node.js/자바스크립트 )  (0) 2022.01.28
[ 백준 ] 1000번: A + B - (C++/C, 자바/JAVA, 파이썬/PYTHON, Node.js/자바스크립트)  (0) 2022.01.27
    'PS/백준' 카테고리의 다른 글
    • [ 백준 ] 1271번 : 엄청난 부자2 - (python/파이썬, java/자바)
    • [ 백준 ] 1004번 : 어린 왕자 - (c++, c, python/파이썬, java/자바)
    • [ 백준 ] 1002번 : 터렛 - (C++/C , JAVA/자바 , PYTHON/파이썬, Node.js/자바스크립트)
    • [백준] 1001번 : A-B - (C++/C, JAVA/자바, PYTHON/파이썬, Node.js/자바스크립트 )
    발효홍삼
    발효홍삼
    코딩하는 홍삼

    티스토리툴바