본문 바로가기
알고리즘/백준

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

by seongjun 2023. 11. 26.

https://www.acmicpc.net/problem/2903

 

2903번: 중앙 이동 알고리즘

상근이는 친구들과 함께 SF영화를 찍으려고 한다. 이 영화는 외계 지형이 필요하다. 실제로 우주선을 타고 외계 행성에 가서 촬영을 할 수 없기 때문에, 컴퓨터 그래픽으로 CG처리를 하려고 한다.

www.acmicpc.net

 

 

초기에 4개의 점을 가진 정사각형에, 입력받은 숫자만큼 일련의 과정을 거쳤을 경우의 점의 개수를 출력해야 한다.

#include <iostream>
#include <string>

using namespace std;

int main(){
    // n == 1 일 때 한 변의 점 개수 : 3
    // n == 2 일 때 한 변의 점 개수 : 5
    // n == 3 일 때 한 변의 점 개수 : 9
    // n+1일 때 한 변의 점의 개수는, n일 때 한 변의 점의 개수 + (n일 때 한 변의 점의 개수 - 1)
    // 또한, 점의 개수와 동일하게 선의 개수를 가짐.

    int n;
    cin >> n;
    int init = 2;
    for (int i=0;i<n;i++){
        init = (init + (init - 1));
    }
    cout << init * init;
}

한 번의 과정을 거칠 때 마다, 정사각형의 한 변의 점의 개수는,

과정을 거치기 전의 한 변의 점 개수 + (과정을 거치기 전의 한 변의 점 개수 - 1) 이다.

그리고 과정을 거친 정사각형은 한 변의 점의 개수만큼의 직선을 가진다. 즉, 한 변의 점의 개수가 5개면 5개의 직선을 가진다.

그러므로, 한 변의 점의 개수의 제곱이 곧 n번의 과정을 거친 정사각형의 점의 개수가 된다.

'알고리즘 > 백준' 카테고리의 다른 글

백준 1193번 분수찾기 [C++]  (0) 2023.11.26
백준 2292번 벌집 [C++]  (0) 2023.11.26
백준 2720번 세탁소 사장 동혁 [C++]  (1) 2023.11.26
백준 11005 진법 변환 2 [C++]  (0) 2023.11.26
백준 2745번 진법 변환 [C++]  (1) 2023.11.26