목차
백준 단계별로 풀어보기
25.09.03
7단계: 2차원 배열
2563번: 색종이
문제 링크 : https://www.acmicpc.net/problem/2563
문제 풀이
>> 문제를 풀기 위해 필요한 것
- 도화지에 색종이를 표시하는 법
: 가로, 세로의 크기가 각각 100인 도화지는 곧 [100, 100] 크기의 2차원 배열로 표시할 수 있고, 가로, 세로의 크기가 각각 10인 색종이는 가로와 세로 각각 입력 받은 값부터 그 값의 +10까지의 배열의 값을 바꿔주면 된다.
--> 이때, 이미 앞의 색종이가 표시되어 배열의 값이 바뀐 곳은 반복문에서 넘어가도록 해주면 자연스럽게 된다.
>> 풀이
- 색종이의 수를 받아 int로 변환하고, [100, 100] 크기의 2차원 배열을 만든다.
- 색종이의 수만큼 반복문을 통해 색종이의 위치를 입력받아 좌표값 x와 y를 각각 int로 변환한다.
- 변환한 x와 y값부터 각각 +10한 값까지 이중 반복문을 통해 좌표를 찾아서 만든 배열에 값을 넣어준다.
- 모든 색종이를 배열에 담았다면, 도화지를 전부 훑으면서 값이 바뀌었다면 결과값에 +1 해준다.
- 결과값을 출력한다.
정답 코드
class Backjoon
{
static void Main(string[] args)
{
int count = int.Parse(Console.ReadLine());
int[,] arr = new int[100, 100];
int result = 0;
for (int i = 0; i < count; i++)
{
string[] input = Console.ReadLine().Split();
int x = int.Parse(input[0]);
int y = int.Parse(input[1]);
for (int j = y; j < y + 10; j++)
{
for (int k = x; k < x + 10; k++)
{
if (arr[j, k] == 1) continue;
arr[j, k] = 1;
}
}
}
for (int i = 0; i < 100; i++)
{
for (int j = 0; j < 100; j++)
{
if (arr[i, j] == 1) result++;
}
}
Console.Write(result);
}
}'Development > Baekjoon' 카테고리의 다른 글
| [C#] 11005번: 진법 변환 2 (0) | 2025.09.06 |
|---|---|
| [C#] 2745번: 진법 변환 (0) | 2025.09.04 |
| [C#] 10798번: 세로읽기 (0) | 2025.09.02 |
| [C#] 2566번: 최댓값 (4) | 2025.08.29 |
| [C#] 2783번: 행렬 덧셈 (1) | 2025.08.28 |