정사각형의 각 변의 중앙에 점을 하나 추가한다.
정사각형의 중심에 점을 하나 추가한다.
초기 상태에서 위와 같은 과정을 한 번 거치면 총 4개의 정사각형이 새로 생긴다. 이와 같은 과정을 상근이가 만족할 때 까지 계속한다.
아래 그림은 과정을 총 2번 거쳤을 때까지의 모습이다.
초기 상태 - 점 4개 1번 - 점 9개 2번 - 25개
메모리 소모량을 줄이기 위해서 중복하는 점을 한 번만 저장하려고 한다. 과정을 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);
}
}
}
근데 또 틀림
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);
}
}
}
이것도 틀렸다. 도대체 뭐가 문제일까?
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'으로 하면 틀렸다고 하는구나....왤까?