본문 바로가기
Development/Baekjoon

[C#] 2563번: 색종이

by Mobics 2025. 9. 3.

목차


    백준 단계별로 풀어보기

    25.09.03

    7단계: 2차원 배열


    2563번: 색종이

    문제 링크 : https://www.acmicpc.net/problem/2563

     

    문제 풀이

    >> 문제를 풀기 위해 필요한 것

    - 도화지에 색종이를 표시하는 법

    : 가로, 세로의 크기가 각각 100인 도화지는 곧 [100, 100] 크기의 2차원 배열로 표시할 수 있고, 가로, 세로의 크기가 각각 10인 색종이는 가로와 세로 각각 입력 받은 값부터 그 값의 +10까지의 배열의 값을 바꿔주면 된다.

    --> 이때, 이미 앞의 색종이가 표시되어 배열의 값이 바뀐 곳은 반복문에서 넘어가도록 해주면 자연스럽게 된다.

     

    >> 풀이

    1. 색종이의 수를 받아 int로 변환하고, [100, 100] 크기의 2차원 배열을 만든다.
    2. 색종이의 수만큼 반복문을 통해 색종이의 위치를 입력받아 좌표값 x와 y를 각각 int로 변환한다.
    3. 변환한 x와 y값부터 각각 +10한 값까지 이중 반복문을 통해 좌표를 찾아서 만든 배열에 값을 넣어준다.
    4. 모든 색종이를 배열에 담았다면, 도화지를 전부 훑으면서 값이 바뀌었다면 결과값에 +1 해준다.
    5. 결과값을 출력한다.

     

    정답 코드

    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