상세 컨텐츠

본문 제목

< 백준 BaekJoon : 2563번 색종이> C++

C++/Baekjoon

by J2on 2023. 7. 31. 23:39

본문

문제

https://www.acmicpc.net/problem/2563

 

2563번: 색종이

가로, 세로의 크기가 각각 100인 정사각형 모양의 흰색 도화지가 있다. 이 도화지 위에 가로, 세로의 크기가 각각 10인 정사각형 모양의 검은색 색종이를 색종이의 변과 도화지의 변이 평행하도록

www.acmicpc.net

 

풀이

 

문제 설명이 본격적이라 당황할 수 있지만, 생각해보면 쉽게 풀 수 있는 문제입니다.

 

저는 기본적으로 흰색 도화지를 [0-100] 좌표를 가진 2차원 Cartesian Coordinate로 생각했습니다.

 

input으로 검은색 사각형이 들어갈 left bottom 좌표가 들어옵니다.

 

이를 바탕으로 x y 각각 10만큼씩 해당하는 위치에 색을 칠해준다고 생각합시다. 

#include <iostream>
using namespace std;

int main(){
    int whiteBoard[100][100];
    for(int x=0; x<100; x++){
        for(int y=0; y<100; y++){
            whiteBoard[x][y] = 0;
        }    
    }
    
    int num;
    cin >>num;

    int inputX, inputY;
    for(int i=0; i<num; i++){
        cin >> inputX >> inputY;
        for(int x=inputX; x<inputX + 10; x++){
            for(int y=inputY; y<inputY + 10; y++){
                whiteBoard[x][y] = 1;
            }
        }
    }
    
    int areaFilledOfBlack = 0;
    for(int x=0; x<100; x++){
        for(int y=0; y<100; y++){
            if(whiteBoard[x][y] == 1){
                areaFilledOfBlack++;
            }
        }    
    }
    
    cout << areaFilledOfBlack;
}

3단계로 나누어서

1. 100X100의 whiteBoard를 생성

2. 검은 종이에 입력받는 만큼 whiteBoard 배열을 1로 바꿔주는 과정

3. 배열 내의 1의 수를 세어 출력

 

무튼 그렇습니다.

 

 

오늘은 이거로 끝!

 

https://github.com/J2on/BaekjoonOnlineJudge/blob/master/Code/Silver/2563.cpp

 

 

관련글 더보기

댓글 영역