[백준 1904번 C/C++] 01타일
목차
[백준 1904번 C/C++] 01타일
https://www.acmicpc.net/problem/1904
1904번: 01타일
지원이에게 2진 수열을 가르쳐 주기 위해, 지원이 아버지는 그에게 타일들을 선물해주셨다. 그리고 이 각각의 타일들은 0 또는 1이 쓰여 있는 낱장의 타일들이다. 어느 날 짓궂은 동주가 지원이
www.acmicpc.net
처음 시도한 코드 - 시간초과, 범위초과
#include<stdio.h>
using namespace std;
int n, cnt;
long long Combination(int m, int r)
{
long long result=1;
for (int i = 0; i < r; i++) {
result *= (n - i);
result /= (i + 1);
}
return result;
}
int main() {
scanf("%d", &n);
for(int i=1; i<=n/2; i++)
{
cnt += (Combination(n-i, i);
}
printf("%d", cnt%15);
return 0;
}
조합의 합 법칙을 사용.
해결전략
이 문제의 경우, 조합의 합 법칙과 피보나치 수열은 원리가 유사하다.
조합을 사용하지 않고 피보나치로 구현하면 실행속도가 더 빠르게 구현할 수 있다.
코드
#include <stdio.h>
int main() {
int n;
scanf("%d", &n);
int dp[1000001]; // dp배열
dp[1] = 1;
dp[2] = 2;
for (int i = 3; i <= n; i++) {
dp[i] = (dp[i - 1] + dp[i - 2]) % 15746;
}
printf("%d\n", dp[n]);
return 0;
}
'⭐ 코딩테스트 > 백준' 카테고리의 다른 글
[백준 10809번 C/C++] 알파벳 찾기 (0) | 2023.05.26 |
---|---|
[백준 1976번 C/C++] 여행 가자 (0) | 2023.05.26 |
[백준 1717번 C/C++] 집합의 표현 (0) | 2023.05.23 |
[백준 2164번 C/C++] 카드2 (0) | 2023.05.23 |
[백준 4779번 C/C++] 칸토어 집합 (0) | 2023.05.22 |
댓글
이 글 공유하기
다른 글
-
[백준 10809번 C/C++] 알파벳 찾기
[백준 10809번 C/C++] 알파벳 찾기
2023.05.26 -
[백준 1976번 C/C++] 여행 가자
[백준 1976번 C/C++] 여행 가자
2023.05.26 -
[백준 1717번 C/C++] 집합의 표현
[백준 1717번 C/C++] 집합의 표현
2023.05.23 -
[백준 2164번 C/C++] 카드2
[백준 2164번 C/C++] 카드2
2023.05.23