Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- BFS
- dynamic programming
- 백준
- 맛집
- 구현
- 시뮬레이션
- C++
- 완전탐색
- 삼성 SDS 대학생 알고리즘 특강
- 동적 계획법
- dfs
- hackerrank
- sw expert academy
- 다이나믹 프로그래밍
- 백트래킹
- BOJ
- 소수
- 에라토스테네스의 체
- PS
- koitp
- 삼성 기출
- 알고리즘
- SWEA
- 그리디
- 해커랭크
- DP
- 스택
- 브루트포스
- Algorithm
- 잠실
Archives
- Today
- Total
펭로그
[C++] BOJ 백준 2193 이친수 본문
문제링크 : https://boj.kr/2193
이친수의 조건
1. 0으로 시작하지 않는다.
2. 1이 두번 연속으로 나오지 않는다.
이 조건을 만족하려면 반드시 2자리 이상의 이친수는 10으로 시작하게 된다.
그리고 10의 뒷부분 역시 이친수의 조건을 만족해야 이친수가 될 수 있다.
DP를 이용하면 간단하게 풀린다.
5자리 이친수의 경우 아래와 같이 표현할 수 있다.
10+3자리 이친수
100+2자리 이친수
1000+1자리 이친수
10000+0자리 이친수(사실 존재하지 않음)
이를 DP 식으로 표현하면 다음과 같다.
이 식에 따라 아래와 같이 풀어주면 된다.
여기서 주의할 점은 47번째 숫자의 값이 2,971,215,073이 되어 int 표현 범위를 초과하게 된다.
반드시 long long 타입으로 선언해주어야 한다.
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 | // BOJ 2193 이친수 #include <bits/stdc++.h> using namespace std; long long dp[91]; int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); // freopen("../input.txt", "r", stdin); int num; cin >> num; dp[0] = 1; // 0 dp[1] = 1; // 1 for (int i = 2; i <= num; i++) for (int j = 2; j <= i; j++) dp[i] += dp[i - j]; cout << dp[num]; return 0; } | cs |
다른 사람들의 풀이 방법을 보면 피보나치 수로 풀어도 된다고 한다.
문제 접근 방법은 거의 비슷한 것으로 보인다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | // BOJ 2193 이친수 #include <bits/stdc++.h> using namespace std; long long dp[91]; int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); // freopen("../input.txt", "r", stdin); int num; cin >> num; dp[0] = 0; dp[1] = 1; for (int i = 2; i <= num; i++) dp[i] += dp[i - 1] + dp[i - 2]; cout << dp[num]; return 0; } | cs |
'Study > PS(Algorithm)' 카테고리의 다른 글
[C++] 백준 BOJ 2293 동전1 (0) | 2018.09.04 |
---|---|
[C++] BOJ 백준 1463 1로 만들기 (0) | 2018.09.01 |
[C++] 백준 BOJ 14501 퇴사 (0) | 2018.08.29 |
[C++] 백준 BOJ 11052 붕어빵 판매하기 (0) | 2018.08.21 |
[C++] 백준 BOJ 2156 포도주 시식 (0) | 2018.08.16 |
Comments