본문 바로가기
프로그래밍/알고리즘

백준 2903번: 중앙 이동 알고리즘

by 만디기 2024. 2. 27.

문제 : 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)