[백준] 1003번 피보나치함수 (DP_JAVA)

2024. 1. 9. 11:47· [자료구조] 알고리즘
목차
  1. 문제
  2. 설계
  3. 알고리즘 설계 [접근방법]  : DP
  4. 풀이 과정
  5. 코드

무난하게 푼 문제!

그렇게 어렵지는 않았다.

 


문제

 

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

 

1003번: 피보나치 함수

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

www.acmicpc.net

 


설계

 

알고리즘 설계 [접근방법]  : DP

숫자가 주어질 때, 이 숫자가 결국에는 0과 1이 얼마나 있는지 개수를 세어야 하는 문제이다.

숫자의 범위가 40보다 작으니 배열을 생성하여 dp로 가능할 것이라 생각했다.

DFS보다 배열로 푸는 것이 훨씬 시간복잡도가 적으니 무난히 통과한 문제다.

 

풀이 과정

 1.

최대 40의 숫자가 입력될 수 있으므로 배열 2개를 41크기로 생성한다.

zeroArr은 0이 몇 개 있는지 그 값을 담을 배열이고, oneArr은 1의 개수를 셀 배열이다.

 

2.

2부터 41까지 반복문을 돌며 피보나치를 해준다.

2로 예를 들면, oneArr[1] + oneArr[0]의 값이 2가 가진 1의 개수다. 그러므로 oneArr[2]에 값을 저장하면되고, zeroArr도 마찬가지다.

 

3.

그리고 idx를 입력 받은 후 zeroArr[idx]와 oneArr[idx]에 있는 값을 출력하면 된다.

 

 


코드

 

import java.util.Scanner;

public class Test_1003_피보나치함수 {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		
		int[] zeroArr = new int[41];	//0 개수 배열
		int[] oneArr = new int[41];	//1 개수 배열
		
		zeroArr[0]=1;	
		zeroArr[1]=0;
		oneArr[0]=0; 	
		oneArr[1]=1;
		
		for(int i=2; i<41; i++) {
			zeroArr[i]=zeroArr[i-1]+zeroArr[i-2];
			oneArr[i]=oneArr[i-1]+oneArr[i-2];
		}
		
		
		int n = sc.nextInt();
		for(int i=0; i<n; i++) {
			int idx = sc.nextInt();
			
			System.out.println(zeroArr[idx] +" "+ oneArr[idx]);
		}
		
	}
}

 

 

(❁´◡`❁)

끝!

 

 

'[자료구조] 알고리즘' 카테고리의 다른 글

[백준] 20529번 가장 가까운 세 사람의 심리적 거리(비둘기집 원리_JAVA)  (1) 2024.01.11
[백준] 17219번 비밀번호 찾기 (Map, JAVA)  (0) 2024.01.10
[백준] 1018번 체스판 다시 칠하기 (완전탐색_JAVA)  (1) 2024.01.08
[프로그래머스] 할인 행사(슬라이딩 윈도우_JAVA)  (2) 2024.01.03
[프로그래머스] 구명보트(투포인터_JAVA)  (1) 2023.11.29
  1. 문제
  2. 설계
  3. 알고리즘 설계 [접근방법]  : DP
  4. 풀이 과정
  5. 코드
'[자료구조] 알고리즘' 카테고리의 다른 글
  • [백준] 20529번 가장 가까운 세 사람의 심리적 거리(비둘기집 원리_JAVA)
  • [백준] 17219번 비밀번호 찾기 (Map, JAVA)
  • [백준] 1018번 체스판 다시 칠하기 (완전탐색_JAVA)
  • [프로그래머스] 할인 행사(슬라이딩 윈도우_JAVA)
콩지연
콩지연
콩지연
콩알탄의 코딩 실력 폭발 도전기
콩지연
전체
오늘
어제
  • 분류 전체보기 (77)
    • [자료구조] 알고리즘 (55)
    • [CS] 네트워크 (1)
    • 백엔드 (11)
    • 자바 (0)
    • 다양한 후기 (0)
    • 영어 (1)

인기 글

최근 글

hELLO · Designed By 정상우.v4.2.1
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.