[2903] 중앙 이동 알고리즘

RudinP·2023년 4월 4일
0

BaekJoon

목록 보기
12/77

정사각형의 각 변의 중앙에 점을 하나 추가한다.
정사각형의 중심에 점을 하나 추가한다.
초기 상태에서 위와 같은 과정을 한 번 거치면 총 4개의 정사각형이 새로 생긴다. 이와 같은 과정을 상근이가 만족할 때 까지 계속한다.
아래 그림은 과정을 총 2번 거쳤을 때까지의 모습이다.
초기 상태 - 점 4개 1번 - 점 9개 2번 - 25개
메모리 소모량을 줄이기 위해서 중복하는 점을 한 번만 저장하려고 한다. 과정을 N번 거친 후 점 몇 개를 저장해야 하는지 구하는 프로그램을 작성하시오.

입력

  • 첫째 줄에 N이 주어진다. (1 ≤ N ≤ 15)

출력

  • 첫째 줄에 과정을 N번 거친 후 점의 수를 출력한다.

생각

점의 개수는 제곱수로 증가한다.
1번 -> 3 * 3
2번 -> 5 * 5
3번 -> 7 * 7
4번 -> 9 * 9
...
이므로
n번에 n+1만큼 큰 수의 제곱이 답임 알 수 있다.

처음 시도


namespace SongE
{
    public class Program
    {
        static void Main(string[] args)
        {
            int n = Console.Read() - '0';       
            Console.WriteLine((n+n+1) * (n+n+1));
        }
    }
}

틀렸다. 훗.

틀린 이유

가로의 점의 수를 잘 보아야 한다.
1번 - 3
2번 - 5
3번 - 9
...
이런식이다.
너무 결과값만 본 나머지 가장 기본적인 가로*가로를 신경쓰지 못했다.
이는 이전 가로 수 * 2 - 1 의 패턴을 가짐을 알 수 있다.

수정 코드


namespace SongE
{
    public class Program
    {
        static void Main(string[] args)
        {
            int n = Console.Read() - '0';
            int v = 2; // 초기 가로 점 개수 상태
            for(int i = 0; i < n; i++)
            {
                v = 2 * v - 1;
            }
            Console.WriteLine(v*v);
        }
    }
}

근데 또 틀림

3차 시도


namespace SongE
{
    public class Program
    {
        static void Main(string[] args)
        {
            int n = Console.Read() - '0';
            int v = 2; // 초기 가로 점 개수 상태
            for(int i = 0; i < n; i++)
            {
                v += v - 1;
            }
            Console.WriteLine(v*v);
        }
    }
}

이것도 틀렸다. 도대체 뭐가 문제일까?

4차 시도


namespace SongE
{
    public class Program
    {
        static void Main(string[] args)
        {
            int n = int.Parse(Console.ReadLine());
            int v = 2; // 초기 가로 점 개수 상태
            for(int i = 0; i < n; i++)
            {
                v += v - 1;
            }
            Console.WriteLine(v*v);
        }
    }
}

아..그냥 char - '0'으로 하면 틀렸다고 하는구나....왤까?

profile
곰을 좋아합니다. <a href = "https://github.com/RudinP">github</a>

0개의 댓글