티스토리 뷰
https://www.acmicpc.net/problem/2193
2193번: 이친수
0과 1로만 이루어진 수를 이진수라 한다. 이러한 이진수 중 특별한 성질을 갖는 것들이 있는데, 이들을 이친수(pinary number)라 한다. 이친수는 다음의 성질을 만족한다. 이친수는 0으로 시작하지 않는다. 이친수에서는 1이 두 번 연속으로 나타나지 않는다. 즉, 11을 부분 문자열로 갖지 않는다. 예를 들면 1, 10, 100, 101, 1000, 1001 등이 이친수가 된다. 하지만 0010101이나 101101은 각각 1, 2번 규칙에 위배되
www.acmicpc.net
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문 연산자
- CLion 한글
- 계산 순서
- res 의미
- C언어 한글
- 안스 프로젝트 구조
- C언어 printf문
- 필드 폭 지정
- CLion 한글 깨짐
- python list 팁
- manifest 의미
- MinGW 한글
- MinGW 한글 깨짐
- printf 계산 순서
- 앱 프로그래밍
- 모바일 앱 설계
- C언어 배열 선언
- 다이나믹 프로그래밍
- 윈도우 복붙
- 배열 메모리
- c언어 공백 출력
- 연산 순서
- 복붙하기
- C언어 한글 깨짐
- printf 스택
- 배열 주의사항
- c언어 필드 폭지정
- 배열 메모리 할당
- 증감연산자 계산 순서
- 백준
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함