[백준] 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 11 | 104 ms | 14172 KB | 304 B |
2. 수학 [C++]
| 언어 | 시간 | 메모리 | 코드 길이 |
|---|---|---|---|
| C++ 17 | 0 ms | 2020 KB | 188 B |
This post is licensed under CC BY 4.0 by the author.