[백준 2563][C++] 색종이

2023. 10. 29. 13:55·코딩 공부/백준(C++)

문제 링크

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

 

2563번: 색종이

첫째 줄에 색종이의 수가 주어진다. 이어 둘째 줄부터 한 줄에 하나씩 색종이를 붙인 위치가 주어진다. 색종이를 붙인 위치는 두 개의 자연수로 주어지는데 첫 번째 자연수는 색종이의 왼쪽 변

www.acmicpc.net


◆문제 해결 및 설명◆

문제 해설 : 100x100 도화지에 10x10 색종이들을 붙이고  도화지가 가려진 넓이를 출력하여라.

 

두가지 방법이 떠올랐는데, 좌표를 사용하여 마지막 결과값을 계산하기와 이차원 배열을 구현하여 직접 칠하는 방법이 떠올랐다. 하지만 색종이가 최대 100장이나 되는데 이를 비교하는것이 직접 칠하는것보다 시간복잡도 측면에서 효율적이지 않다고 생각하고 구현이 복잡함으로 직접 칠하는 방법으로 코드를 작성하였다.

 

간단한 코드임으로 짧게 글로 설명하겠다. 2차원 배열 whiteBoard를 선언해주고 색종이를 받아서 해당 위치를 1로 초기화해준다. 모든 색종이에 대한 연산이 끝났다면 whiteBoard의 1의 갯수를 계산하여 정답으로 출력해준다.

 

코드가 너저분해보여 algorithm의 fill을 사용한 버전도 코드에 올려놓겠다. #1 부분을 삭제하고 주석을 코드로 돌려주면 된다.

 

◆코드 전문◆

#include <iostream>
#include <vector>
// #include <algorithm>

using namespace std;

int main()
{
    vector<vector<int>> whiteBoard(105, vector<int>(105));
    int numOfColoredPaper;
    cin >> numOfColoredPaper;
    while (numOfColoredPaper--)
    {
        int row, col;
        cin >> row >> col;
        for (int i = row; i < row + 10; i++)
        {
            // #1
            for (int j = col; j < col + 10; j++)
            {
                if (!whiteBoard[i][j])
                {
                    whiteBoard[i][j] = 1;
                }
            }

            // #2
            // fill(&whiteBoard[i][col], &whiteBoard[i][col] + 10, 1);
        }
    }

    int answer = 0;
    for (int i = 0; i < whiteBoard.size(); i++)
    {
        for (int j = 0; j < whiteBoard[i].size(); j++)
        {
            answer += whiteBoard[i][j];
        }
    }
    cout << answer;
}

'코딩 공부 > 백준(C++)' 카테고리의 다른 글

[백준 1406][C++] 가운데를 말해요  (1) 2023.11.11
[백준 1655][C++] 가운데를 말해요  (0) 2023.10.31
[백준 10798][C++] 세로읽기  (0) 2023.10.28
[백준 4781][C++] 사탕 가게  (0) 2023.10.26
[백준 14497][C++] 주난이의 난(難)  (1) 2023.10.21
'코딩 공부/백준(C++)' 카테고리의 다른 글
  • [백준 1406][C++] 가운데를 말해요
  • [백준 1655][C++] 가운데를 말해요
  • [백준 10798][C++] 세로읽기
  • [백준 4781][C++] 사탕 가게
메카인
메카인
  • 메카인
    메카인의 지식창고
    메카인
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 코딩 공부
        • TIL(Today I Learn)
        • TIL
        • 백준(C++)
        • Python
        • 알고리즘
        • 프로젝트 회고
      • C++
        • C++
        • C++ STL
        • C,C++ mCoding yotube
      • 게임개발
        • 언데드서바이벌_골드메탈_클론코딩
        • 3D_골드메탈_클론코딩
        • 유니티_문제해결
        • 게임 수학
      • Unreal 공부
        • UE5 GameDev
        • Unreal Engine 4 C++ The Ult..
      • 교재 문제 풀이
        • 운영체제
      • 정보처리기사
        • 정처기 요약
        • 정처기 오답노트
      • 학교수업
        • 데이터베이스
        • 프로그래밍 언어론
        • 리눅스 시스템
        • 네트워크
      • 일상
        • 주식
        • 독서
      • (비공개 전용)
        • memory
        • Build
        • OOP
        • Smart Pointer
        • lamda
        • 게임 수학
        • 모던 C++
        • 모던 C++ STL
        • 모던 C++ Concurrency, Paralle..
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
    • 글쓰기
    • 블로그 관리
  • 링크

  • 공지사항

    • 공지사항 - 인생과 블로그의 목표
  • 인기 글

  • 태그

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
메카인
[백준 2563][C++] 색종이
상단으로

티스토리툴바