2xn 타일링을 풀어보았다.
몇개의 예시를 바탕으로 경우의 수를 세어 보았고 '피보나치 함수'
즉, 앞선 a의 경우를 구하기 위해 a-1의 경우와 a-2의 경우를 더하면 되는 것이었다.
그래서 코드를
#include <stdio.h>
int main() {
int a; int count;
scanf_s("%d", &a);
count = algori(a);
count = count / 10007;
printf("%d", count);
system("pause");
}
int algori(int a) {
if (a == 1) return 1;
else if (a == 0) return 1;
else {
return algori(a - 1) + algori(a - 2);
}
}
위와 같이 만들어서 제출을 하니 system과 scanf_s에서 컴파일 에러가 나오고
그 두가지를 수정 후 다시 제출을 하니 '시간 초과'가 나왔다.
여기서 시간 초과는 출력값을 옳지만 제한 시간보다 오래 걸린다는 것을 의미해서 다른 방식으로 시도를 하였다.
#include <stdio.h>
int main() {
int su;
scanf("%d", &su);
int a[1001];
a[1] = 1;
a[2] = 2;
for (int i = 3; i <= su ; i++) {
a[i] = (a[i - 2] + a[i - 1]) % 10007;
}
printf("%d", a[su]);
}
이 방식은 su로 원하는 2xn에서 n의 값을 받고 for문을 통해 실행을 시킨다.
답은 위와 동일하였고 이 것을 제출하였을때 정답 처리가 되었다.
지금은 왜 위의 코드와 아래 코드가 시간이 다르게 걸리는지 모르겠다.
'백준 문제 풀이 & C++ 공부' 카테고리의 다른 글
백준 2231번 C/C++ (0) | 2021.02.08 |
---|---|
백준 2614번 C/C++ (0) | 2021.02.08 |
백준 10163번 C/C++ (0) | 2020.09.06 |
백준 9095번 C/C++ (0) | 2020.08.24 |
백준 1463번 C/C++ (0) | 2020.08.23 |