활동 내용

1. 활동 내역

1) 알고리즘 문제해결(동적 계획법:타일링 방법)

해결할 문제: 2×n 타일링 문제

문제 설명

2×n 타일링 문제는 2×n 크기의 직사각형을 2×1 크기의 타일로 채우는 방법의 수를 구하는 문제이다. 2×2 크기의 직사각형은 다음과 같은 두 가지 방법으로 채울 수 있다

  1. 두 개의 2×1 타일을 가로로 놓는 방법
  2. 두 개의 2×1 타일을 세로로 놓는 방법

주어진 n에 대해 2×n 직사각형을 채우는 방법의 수를 구해야 한다. 점화식 T(n)=T(n−1)+T(n−2)를 구현해야 한다.

#include <stdio.h>

int tile(int n) {
    if (n == 0) return 1;
    if (n == 1) return 1;

    int dp[n+1];
    dp[0] = 1;
    dp[1] = 1;

    for (int i = 2; i <= n; i++) {
        dp[i] = dp[i-1] + dp[i-2];
    }

    return dp[n];
}

int main(void) {
    int n;
    scanf("%d", &n);
    printf("%d\\n", tile(n));
}

2) python복습(기초 문법)

2.1 변수와 자료형

Python에서는 변수를 선언할 때 자료형을 명시할 필요가 없다. 변수에 값을 할당하면 자동으로 자료형이 결정된다.

#파이썬 주석은 #사용한다.

x = 10  # 정수형 변수
y = 3.14  # 실수형 변수
name = "Python"  # 문자열 변수
is_valid = True  # 불리언 변수

2.2 연산자

Python에서는 다양한 연산자를 제공한다. 대표적인 연산자는 다음과 같다: