[백준] 2563 - 색종이



문제 정보


  • 문제 이름: 색종이
  • 문제 번호: 2563
  • 문제 유형: 알고리즘 - 구현
  • 풀이 언어: C
  • 제출 시간: 2019년 4월 29일 23시 48분 10초
  • 원본 링크: https://www.acmicpc.net/problem/2563



문제

가로, 세로의 크기가 각각 100인 정사각형 모양의 흰색 도화지가 있다. 이 도화지 위에 가로, 세로의 크기가 각각 10인 정사각형 모양의 검은색 색종이를 색종이의 변과 도화지의 변이 평행하도록 붙인다. 이러한 방식으로 색종이를 한 장 또는 여러 장 붙인 후 색종이가 붙은 검은 영역의 넓이를 구하는 프로그램을 작성하시오.

예를 들어 흰색 도화지 위에 세 장의 검은색 색종이를 그림과 같은 모양으로 붙였다면 검은색 영역의 넓이는 260이 된다.



입력

첫째 줄에 색종이의 수가 주어진다. 이어 둘째 줄부터 한 줄에 하나씩 색종이를 붙인 위치가 주어진다. 색종이를 붙인 위치는 두 개의 자연수로 주어지는데 첫 번째 자연수는 색종이의 왼쪽 변과 도화지의 왼쪽 변 사이의 거리이고, 두 번째 자연수는 색종이의 아래쪽 변과 도화지의 아래쪽 변 사이의 거리이다. 색종이의 수는 100 이하이며, 색종이가 도화지 밖으로 나가는 경우는 없다.



출력

첫째 줄에 색종이가 붙은 검은 영역의 넓이를 출력한다.



결과 - 소스코드 및 랭크





메모

이번 문제는 다 풀어놓고 마지막에 예제 입력에만 초점을 맞추고 제출했다가 실수를 해서 2번 제출하게 되었다.

2차원 배열을 만들어서 그 공간을 흰색 도화지라고 가정하고 색종이가 포함될 각각의 배열 공간마다 1을 대입하여 실제 그림을 그리는 것처럼 구현하였다. 모든 1을 대입한 이후에 전체를 쭉 훑으면서 1이 들어간 곳을 카운트하였고 그 값이 넓이가 되었다.

나로서는 이것이 최선이라 생각했는데 107위 정도로 나온 것을 보고 다른 분들의 풀이를 살펴보게 되었다.

주로 While 문을 이용하여 이미 측정한 공간에 대해서는 중복 검사를 하지 않는 그러한 방식으로 하시는 분들이 계셨던 것 같고 아니면 비슷하지만 조금 더 간단한 방식으로 소스코드를 작성하신 분들이 대부분이셨던 것 같다.

앞으로 문제풀이를 하면서 최대한 간단한 방식으로 작성할 수 있는 방법을 찾아나가봐야 할 것 같다.

Author

Alec J

Posted on

2019-04-30

Updated on

2021-02-09

Licensed under