쿠릉쿠릉 쾅쾅
쿠릉쿠릉 쾅쾅
쿠릉쿠릉 쾅쾅
250x250
전체 방문자
오늘
어제
  • 분류 전체보기
    • HTML CSS
    • 잡담
    • 프로그래밍 꿀팁 사이트
    • 코딩 도서
    • [자바]
      • 디자인 패턴
      • 자바의 정석 - 3판
      • 자바
      • 자바 문법
    • git
    • [TDD]
    • 개발 서적 독후감
      • 클린 코더
      • 토비 스프링3
      • 객체지향의 사실과 오해
      • 모던 자바 인 액션
      • 엘레강트 오브젝트
    • CS
      • 운영체제
      • HTTP
    • [SQL]
      • SQL 기초
      • 혼자공부하는SQL
    • [ Spring ]
      • REST API
      • Spring Toy
      • Spring 에러
      • Spring
      • Spring 입문
      • Spring 핵심 원리
      • SpringMVC 1편
      • SpringMVC 2편
      • Spring Boot를 이용한 RESTful We..
      • Batch
    • [JPA]
      • JPA
      • JPA 에러
      • JPA 프로그래밍 - 기본편
      • 스프링 부트와 JPA 활용 1 - 웹 애플리케이..
      • 실전! 스프링 부트와 JPA 활용2 - API 개..
      • 실전! 스프링 데이터 JPA
      • 실전! Querydsl
    • 인텔리제이
    • [DB]
      • DB
      • H2
    • Gradle
    • 면접
    • [알고리즘]
      • 알고리즘
      • 자료구조
      • 자바 알고리즘 공부
    • [프로젝트]
    • 쿠릉식 객체지향 사고
    • 리눅스

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 자바
  • 스프링
  • 재귀
  • 깃허브
  • springboot
  • Spring
  • MVC
  • 자료구조
  • java
  • GitHub
  • SQL
  • 알고리즘
  • 함수형인터페이스
  • JPA
  • http
  • querydsl
  • 스프링부트
  • Git
  • 백준
  • REST API

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
쿠릉쿠릉 쾅쾅

쿠릉쿠릉 쾅쾅

[알고리즘]/알고리즘

[알고리즘] 백준 1003번 : 피보나치 함수

2022. 4. 12. 10:32
728x90

 

문제

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

 

📌 내 풀이

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
 
public class Main {
	
	static Integer[][] count;
	
    public static void main(String[] args) throws IOException  {
    	
    	
    	BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    	
    	// 테스트 케이스 수
    	int T = Integer.parseInt(br.readLine());
    	
    	for(int i=0; i<T; i++) {
    		StringBuilder sb = new StringBuilder();
    		
    		// 피보나치 수
    		int N = Integer.parseInt(br.readLine());
    		
    		// 1 과 0이 몇 번째 호출됐는지 세는 배열
    		count = new Integer[N+1][2];
    		
    		for(int k=0; k<=N; k++ ) {
    			if(k==0) {  // 피보나치 수가 0일 때 
    		   		count[k][0] = 1;  // 0은 1번 출력
    	    		count[k][1] = 0;  // 1은 0번 출력
    	    		continue;
    			}
    			
    			if(k==1) {  // 피보나치 수가 1일 때
    	    		count[k][0] = 0;  // 0은 0번 출력
    	    		count[k][1] = 1;  // 1은 1번 출력
    	    		continue;
    			}
    			
    			// 피보나치 수가 아직 구해지지 않았을 때
    			if(count[k][0] == null || count[k][-1] == null) {
    				
    				// k의 0번쨰 호출 = (k-1) 0번쨰 호출 수 + (k-2)의 0번쨰 호출 수 
    				count[k][0] = (count[k-1][0] + count[k-2][0]);
    				// k의 1번쨰 호출 = (k-1) 1번쨰 호출 수 + (k-2)의 1번쨰 호출 수 
    				count[k][1] = (count[k-1][1] + count[k-2][1]);
    			}
    		}

    		sb.append(count[N][0])
    			.append(" ")
    			.append(count[N][1]);
    		System.out.println(sb);
    	}
    }
}

 

📌 참고할 만한 풀이 

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
 
public class Main {
	
	static Integer[][] count = new Integer[41][2];
	
    public static void main(String[] args) throws IOException  {
    	
    	count[0][0] =1;
    	count[0][1] = 0;
    	count[1][0] = 0;
    	count[1][1] = 1;
    	
    	BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    	
    	int T = Integer.parseInt(br.readLine());
    	
    	while(T --> 0) {
    		int N = Integer.parseInt(br.readLine());
    		StringBuilder sb = new StringBuilder();
    		
    		fibo(N);
    		
    		sb.append(count[N][0])
    			.append(" ")
    			.append(count[N][1]);
    		System.out.println(sb);
    		
    	}
    }
    
    static Integer[] fibo(int n) {
    	if(count[n][0]==null || count[n][1]==null) {
    		count[n][0] = fibo(n-1)[0] + fibo(n-2)[0]; 
    		count[n][1] = fibo(n-1)[1] + fibo(n-2)[1]; 
    	}

    	// count[n][0], count[n][1]을 담고 있는 count[n]을 반환한다.
    	return count[n];
    }
}

 

 

 


👀 참고자료

https://st-lab.tistory.com/124

728x90

'[알고리즘] > 알고리즘' 카테고리의 다른 글

백준 10820번 : 문자열 분석 (브론즈2)  (0) 2022.04.12
백준 1718번 : 암호 (브론즈2)  (0) 2022.04.12
[알고리즘] 백준 10809번 알파벳 찾기 (브론즈2)  (0) 2022.04.07
[알고리즘] 백준 2870번 : 수학숙제 (실버4)  (0) 2022.03.14
[알고리즘] 백준1159번 : 농구경기 (브론즈2)  (0) 2022.03.05
    '[알고리즘]/알고리즘' 카테고리의 다른 글
    • 백준 10820번 : 문자열 분석 (브론즈2)
    • 백준 1718번 : 암호 (브론즈2)
    • [알고리즘] 백준 10809번 알파벳 찾기 (브론즈2)
    • [알고리즘] 백준 2870번 : 수학숙제 (실버4)
    쿠릉쿠릉 쾅쾅
    쿠릉쿠릉 쾅쾅
    깃허브 주소 : https://github.com/kureung

    티스토리툴바