Post

[BaekJoon] #2903 - 중앙 이동 알고리즘 [Java][C++]

[BaekJoon] #2903 - 중앙 이동 알고리즘 [Java][C++]

문제 링크


1. 아이디어

주어진 규칙을 따를 때 저장할 점을 구하는 문제로 한 행 또는 열을 구성하는 사각형의 수 +1이 한 행 또는 열을 구성하는 점의 수가 되며 이를 제곱한 값이 전체 점의 수가 된다.

현재 한 행을 구성하는 사각형의 수를 $a_n$이라고 하면 점화식은 $a_n = 2 \times a_{n-1}$이 되므로 일반항은 $a_n = 2^{n}$이 된다. ($a_0 = 1$) 따라서 점의 수는 $(2^{n} + 1)^2$이 된다.


2. 복잡도

접근시간공간
풀이$O(1)$$O(1)$

3. 코드

풀이 [Java][C++]

1
2
3
4
5
6
7
8
9
10
import java.io.*;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        int n = Integer.parseInt(br.readLine());
        System.out.println(((1 << n) + 1) * ((1 << n) + 1));
    }
}
1
2
3
4
5
6
7
8
9
10
11
#include <bits/stdc++.h>
using namespace std;

int main() {
    ios::sync_with_stdio(0);
    cin.tie(0);

    int n;
    cin >> n;
    cout << ((1 << n) + 1) * ((1 << n) + 1);
}

This post is licensed under CC BY 4.0 by the author.