티스토리 뷰
https://www.acmicpc.net/problem/2193
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws NumberFormatException, IOException {
// TODO Auto-generated method stub
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int length = Integer.parseInt(br.readLine());
int[] dp = new int[length+1]; //편의를 위하여 배열의 길이를 이진수 길이보다 1 크게 만든다.
//-> 10번째 숫자이면 dp[9]를 접근하는게 맞으나 dp[0]을 버림으로써 인덱스 넘버가 곧 순서가 되게끔 하기 위하여
dp[0]=0;
dp[1]=1;
for(int i=2;i<=length;i++) {
dp[i]=dp[i-1]+dp[i-2];
}
System.out.println(dp[length]);
}
}
http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4f; text-decoration:none">Colored by Color Scripter
|
" target="_blank" style="text-decoration:none; color:white">cs |
dp배열은 n자리 이친수를 나타낸다.
n번째에 0이 들어간 이친수의 갯수는 n-1번째에 1혹은 0모두 들어갈 수 있다. 그러므로 dp[n-1]과 값이 같다.
그러나 n번째에 1이 들어가게 되면 n-1번째에는 반드시 0이 들어가야하고, n-2번째에 1 혹은 0이 모두 들어갈 수 있어 dp[n-2]와 같게 된다.
그리하여 dp[n]=dp[n-1]+dp[n-2]로 해결할 수 있게 된다.
'Algorithm > 백준 문제풀이' 카테고리의 다른 글
DP [백준 1912번 연속합] -java- (0) | 2019.04.25 |
---|---|
DP [백준 11055번 가장 큰 증가하는 부분수열] -java- (0) | 2019.04.25 |
DP [백준 11053번 가장 긴 증가하는 부분수열] -java- (0) | 2019.04.24 |
DP [백준 2156번 포도주 시식] -java- (0) | 2019.04.24 |
DP [백준 9465번 스티커] -java- (0) | 2019.04.24 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- 계산 순서
- 윈도우 복붙
- printf문 연산자
- c언어 필드 폭지정
- C언어 배열 선언
- 연산 순서
- MinGW 한글
- 모바일 앱 설계
- manifest 의미
- printf 스택
- 복붙하기
- MinGW 한글 깨짐
- C언어 한글
- 배열 주의사항
- printf 계산 순서
- 배열 메모리 할당
- C언어 printf문
- 증감연산자 계산 순서
- 앱 프로그래밍
- c언어 공백 출력
- 다이나믹 프로그래밍
- 백준
- python list 팁
- CLion 한글 깨짐
- C언어 한글 깨짐
- res 의미
- CLion 한글
- 필드 폭 지정
- 배열 메모리
- 안스 프로젝트 구조
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
글 보관함