본문 바로가기

C C++/C C++ 백준69

C언어 백준 9095번 1, 2, 3 더하기 문제 풀이 귀납적으로 경우의 수를 나열하고, 나열된 숫자를 통해 점화식을 세웠습니다. 이 점화식을 메모이제이션을 통해 기록하였습니다. 하나씩 나열 해 본 결과 첫 번째 나열된 값 a[1] = 1; 두 번째 나열된 값 a[2] = 2; 세 번째 나열된 값 a[3] = 4; 네 번째 나열된 값 a[4] = 7;.... 시험 때는 정확성을 위해 다섯 번째 나열된 값까지 구했을 것으로 보입니다. 결과적으로 a[n]=a[n-1]+a[n-2]+a[n-3] (n>=4) 점화식을 얻었습니다. 코드 #include int n; int arr[1010]={0,}; int main(void) { int T; scanf("%d",&T); for (int i=0; i 2022. 6. 7.
C언어 백준 11727번 2×n 타일링 2 문제 풀이 점화식을 세우고 메모이제이션을 통해 n번째 값을 구하는 형태입니다. 노트에 2xn의 타일링을 만들고 경우의 수를 세어가면서 하나씩 값을 나열하였습니다. 첫 번째 2x1 타일링 개수 : 1 두 번째 2x2 타일링 개수 : 3 세 번째 2x3 타일링 개수 : 5 여기까지 나열하였을 때, 피보나치 또는 단순 덧셈이 아닌 것을 확인하였습니다. 네 번째 2x4 타일링 개수 : 11 더 이상 나열하는 것은 너무 많은 개수를 요구하는 것 같아 네 번째까지 두고 추론하였습니다. 실제 시험이라면 시간을 보고 다섯 번째까지 해 보았을 것입니다. 결과적으로 a[n]=a[n-1]+2*a[n-2]라는 식을 세울 수 있었습니다. 코드 #include int n; int arr[1010]={0,}; int main(vo.. 2022. 6. 7.
C언어 백준 11726번 2×n 타일링 문제 2×n 크기의 직사각형을 1×2, 2×1 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오. 문제풀이 #include int arr[1001]; int num; void solution(int n); int main(void) { scanf("%d",&num); solution(num); } void solution(int n) { int i; arr[0]=1; arr[1]=1; for(i=2;i 2022. 5. 28.
C언어 백준 1463번 1로 만들기 문제 정수 X에 사용할 수 있는 연산은 다음과 같이 세 가지 이다. X가 3으로 나누어 떨어지면, 3으로 나눈다. X가 2로 나누어 떨어지면, 2로 나눈다. 1을 뺀다. 정수 N이 주어졌을 때, 위와 같은 연산 세 개를 적절히 사용해서 1을 만들려고 한다. 연산을 사용하는 횟수의 최솟값을 출력하시오. 문제 풀이 #include #include #define MIN(a,b) (a 2022. 5. 28.