프로그래밍/알고리즘
백준 2903번: 중앙 이동 알고리즘
만디기
2024. 2. 27. 14:33
문제 : https://www.acmicpc.net/problem/2903
2903번: 중앙 이동 알고리즘
상근이는 친구들과 함께 SF영화를 찍으려고 한다. 이 영화는 외계 지형이 필요하다. 실제로 우주선을 타고 외계 행성에 가서 촬영을 할 수 없기 때문에, 컴퓨터 그래픽으로 CG처리를 하려고 한다.
www.acmicpc.net
(1) 내 해답 : 일반식을 구하여 해결
#include <cstdio>
#include <cmath>
int main()
{
int N = 0;
scanf("%d", &N);
printf("%d\n", (int)(pow( ( pow(2, N + 1) - ( pow(2, N) - 1 ) ) , 2)));
return 0;
}
(2) 다른 해답
- 나와 비슷한 방식의 해답
print((2**int(input())+1)**2)
- 동적 계획법
import sys
input = sys.stdin.readline
dp = [0] * 16
dp[0] = 4
dp[1] = 9
dp[2] = 25
dp[3] = 81
t1 = 9
t2 = 4
n = int(input())
for i in range(4, n + 1):
t2 *= 2
t1 += t2
dp[i] = t1 ** 2
print(dp[n])
- 비트 시프트 연산자 활용
#include <cstdio>
int main() {
int n;
scanf("%d", &n);
printf("%d\n", n*(n = (1 << n) + 1));
}
#include<stdio.h>
int main(){
int t, s, s2;
scanf("%d", &t), s=(1<<t)+1;
printf("%d", s*s);
return 0;
}
n = int(input())
s = (1 << n) + 1
print(s ** 2)