
처음에 간단한 문제 풀때는 무지성으로 머리속으로만 코딩하면서 문제가 풀렸는데
조금만 복잡한 문제보이면 머리속 뇌정지와서
생각부터 하려하지 말고 문제를 단계별로 나눠서 이해하고,
풀이 과정도 단계별로 나눠서 한 단계씩 코딩하고
중간에 내가 생각한것들이 맞는지 중단점 걸어서 디버깅하니까
마지막에 신기하게 정답이 출력됨.
내가 생각해낸 코드가 실행이 된다는 쾌감에 중독될거 같으면서도 다 풀면 머리가 아픔..
using System;
public class Program
{
public static void Main(string[] args)
{
// 문제.
// 첫째 줄에 색종이의 수가 주어진다.
// 이어 둘째 줄부터 한 줄에 하나씩 색종이를 붙인 위치가 주어진다.
// 색종이를 붙인 위치는 두 개의 자연수로 주어지는데
// 첫 번째 자연수는 색종이의 왼쪽 변과 도화지의 왼쪽 변 사이의 거리이고,
// 두 번째 자연수는 색종이의 아래쪽 변과 도화지의 아래쪽 변 사이의 거리이다.
// 색종이의 수는 100 이하이며, 색종이가 도화지 밖으로 나가는 경우는 없다
// 문제 분석.
//1. 첫째 줄에 색종이 수 입력.
//2. 색종이 수에 따라 색종이를 붙인 좌하단 x y좌표를 공백으로 구분하여 입력
//3. 색종이 크기는 10X10
//4. 겹친 부분을 제외한 색종이의 넓이
// 풀이 분석.
//1. N변수에 색종이 수 입력.
//2. for문으로 색종이 수에 따른 x y를 입력. 입력받은 값은 배열에 저장.
//입력받은 색종이 수에 따른 좌표 값 2차배열에 할당.
//3. 도화지 크기가 100x100 이며 넘어갈 수 없다.
//도화지를 2차 배열에 할당
//4. x좌표가 10, y좌표가 10이라고 하면
//ex) paper 2차배열에 10,10 에서 19 19 까지 정수 1값 적용하여 할당.
//5. paper 2차원 배열의 모든 값을 더하여 int sum에 넣어 넓이를 구함.
//6. 예시)
//입력
//3
//3 7
//15 7
//5 2
//출력
//260
int N = int.Parse(Console.ReadLine());
int[,] lv2_1 = new int[N,2];
int[,] paper = new int[100,100];
int sum=0;
for (int i=0; i < N; i++)
{
string input = Console.ReadLine();
string[] nums = input.Split(' ');
int x = int.Parse(nums[0]);
int y = int.Parse(nums[1]);
lv2_1[i,0] = x;
lv2_1[i,1] = y;
}
for (int i = 0; i < N; i++)
{
int x = lv2_1[i,0];
int y = lv2_1[i,1];
for(int j=0;j<10;j++)
{
for(int k = 0; k < 10; k++)
{
paper[x, y] = 1;
x++;
}
y++;
x -= 10;
}
y -= 10;
}
for(int i=0;i<100;i++)
{
for(int j = 0; j < 100; j++)
{
sum += paper[i,j];
}
}
Console.WriteLine(sum);
}
}