반응형
1. 풀이
01 가로, 세로의 크기가 각각 100인 정사각형 모양의 도화지 만들기
int[,] array = new int[100, 100];
02 색종이 수 입력 받기
int n = int.Parse(Console.ReadLine());
03 색종이 붙일 위치 입력 받기
for (int i = 0; i < n; i++)
{
string input = Console.ReadLine();
string[] token = input.Split();
int x = int.Parse(token[0]);
int y = int.Parse(token[1]);
}
04 도화지에 색칠하기
for (int j = x; j < x + 10; j++)
{
int num = 0;
for (int w = y; w < y + 10; w++)
{
if (array[j, w] == 0)
{
array[j, w] = 1;
answer++;
}
}
}
코드 풀이
0) 변수 answer는 검은 영역 넓이
1) 색종이 붙일 위치는 (x,y)(아래 그림 참조)이다. 가로 세로 길이가 10인 사각형이므로 for문의 범위가 x+10, y+10 이 된다.
2) 입력을 받을때 해당 범위에 있는 위치의 배열값을 검은 영역이라는 뜻으로 0에서 1로 바꿔준다. 배열의 각 한 칸은 넓이가 1인 사각형이므로 검은영역 한 칸이 생길때마다 answer++을 한다.
3) 새로운 위치 값을 받으면서 새로운 사각형들이 생기는데 이미 존재했으면 1로 바꿔줄 필요가 없고 0이였으면 1로 바꿔준다.
2. 출력 예시
01 1 1
02 0 2(위에 1번과 누적)
03 3 3(위에 2번과 누적)
3. 최종 코드
using System;
using System.Collections.Generic;
namespace baek2
{
class Program
{
static void Main(string[] args)
{
int[,] array = new int[100, 100];
int answer = 0;
int n = int.Parse(Console.ReadLine());
for (int i = 0; i < n; i++)
{
string input = Console.ReadLine();
string[] token = input.Split();
int x = int.Parse(token[0]);
int y = int.Parse(token[1]);
for (int j = x; j < x + 10; j++)
{
for (int w = y; w < y + 10; w++)
{
if (array[j, w] == 0)
{
array[j, w] = 1;
answer++;
}
}
}
}
Console.WriteLine(answer);
}
}
}
반응형
'코딩테스트 준비 > 백준 C#' 카테고리의 다른 글
백준 C# - 11005 +) 풀이 (0) | 2023.05.25 |
---|---|
백준 C# - 2745 (0) | 2023.05.25 |
백준 C# - 10798 (0) | 2023.05.18 |
백준 C# - 2566 (0) | 2023.05.17 |
백준 C# - 2738 (0) | 2023.05.15 |
댓글