[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.