코딩 테스트/백준

백준 - [단계별로 풀어보기 수학1] 2903 중앙 이동 알고리즘

devrabbit22 2026. 3. 23. 03:24

이번 문제는 정사각형의 각 변에 있는 점의 개수가 같다는 점을 이용하는 문제이다.
각 변의 점 개수가 규칙적으로 증가하는 것을 확인하면, N번째에서 한 변의 점의 개수는 2^N + 1임을 알 수 있다.
따라서 전체 점의 개수는 (2^N + 1)^2로 구할 수 있다.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp3
{
    internal class math1
    {
        static void Main(string[] args)
        {
            //백준 2903 중앙 이동 알고리즘
            int N = int.Parse(Console.ReadLine());

            // 정사각형이므로 모든 변의 점 개수는 동일하다.
            // N번째에서 한 변의 점 개수 = 2^N + 1 (이전 단계에서 2배로 증가 후 중간 점 추가)
            // 총 점의 개수 = (한 변의 점 개수)^2 = (2^N + 1)^2
            Console.WriteLine(Math.Pow(Math.Pow(2, N) + 1, 2));
        }
    }
}

 

출력 결과 1
출력 결과 2
출력 결과 3

이번 문제는 규칙을 빠르게 파악하면 쉽게 해결할 수 있는 문제였다. 처음에는 ‘중앙 이동 알고리즘’이라는 이름 때문에 어려운 문제인가 싶어 시간을 들여 고민했다. 하지만 규칙을 찾아보니, 중앙을 기준으로 양쪽에 동일한 개수의 점이 추가되며 각 변의 점 개수가 규칙적으로 증가한다는 것을 알 수 있었고 이 규칙을 이해한 후에는 문제를 쉽게 해결할 수 있었다.

마지막으로, 이번 문제를 풀면서 규칙을 빠르게 찾고 문제를 해석하는 능력이 아직 부족하다고 느꼈다. 앞으로 다양한 문제를 풀어보며 문제를 바라보는 시각을 넓혀야겠다고 생각했다.