본문 바로가기
백준 문제 풀이 & C++ 공부

백준 11726번 C/C++

by daisy0461 2020. 8. 24.

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