알고리즘/문제 풀이

2903번: 중앙 이동 알고리즘

Themion 2021. 12. 21. 20:17

https://www.acmicpc.net/problem/2903

 

2903번: 중앙 이동 알고리즘

상근이는 친구들과 함께 SF영화를 찍으려고 한다. 이 영화는 외계 지형이 필요하다. 실제로 우주선을 타고 외계 행성에 가서 촬영을 할 수 없기 때문에, 컴퓨터 그래픽으로 CG처리를 하려고 한다.

www.acmicpc.net

각 단계의 점의 총 개수는 가장 큰 정사각형의 한 변의 점의 개수의 제곱이다. 또한 현재 단계의 한 변의 점의 개수는 직전 단계의 한 변의 점의 개수에 2를 곱한 뒤 1을 뺀 값이므로, 이를 반복문을 이용해 구한 뒤 한 변의 점의 개수의 제곱을 출력하면 된다.

#include <cstdio>

int main() {
    // N: 중앙 이동 알고리즘을 실행할 횟수, ans: 현재 점의 수
    int N, ans = 2;
    scanf("%d", &N);

    // 각 단계의 점의 총 개수는 가장 큰 정사각형의 한 변의 점의 개수의 제곱이다
    // 현재 단계의 한 변의 점의 개수는
    // 직전 단계의 한 변의 점의 개수에 2를 곱한 뒤 1을 뺀 값이므로
    // 이를 반복문으로 구현
    while (N--) ans += ans - 1;

    //한 변에 점이 ans개 있으므로 전체 점의 개수는 ans^2개이다
    printf("%d\n", ans * ans);

    return 0;
}