Post

[백준] 2903번 - 중앙 이동 알고리즘 [Java][C++]

[백준] 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. 코드

1. 수학 [Java]

비트 시프트 연산자로 $2$ 의 거듭제곱을 표현하여 식을 세웠다.

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));
    }
}

2. 수학 [C++]

비트 시프트 연산자로 $2$ 의 거듭제곱을 표현하여 식을 세웠다.

1
2
3
4
5
6
7
8
9
10
11
#include <bits/stdc++.h>
using namespace std;

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

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

3. 풀이 정보

1. 수학 [Java]

언어시간메모리코드 길이
Java 11104 ms14172 KB304 B

2. 수학 [C++]

언어시간메모리코드 길이
C++ 170 ms2020 KB188 B

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