본문 바로가기

알고리즘/python

[python/파이썬] 백준 2563 색종이

반응형

[문제 출처]

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

 

2563번: 색종이

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

www.acmicpc.net

 

 

[문제 풀이]

겹치게 붙여질 수 있는 검은 색종이가 붙은 영역의 넓이를 구하는 문제이다.

테스트 케이스는 3개의 색종이이지만, 최대 100개까지 붙을 수 있으므로 몇 겹으로 색종이가 겹쳐질지 모른다.

따라서 겹쳐지는 부분의 넓이를 구해서 빼거나 하는 방법으로는 안된다.

 

2차원 배열을 이용하는 문제로, 흰 도화지의 넓이만큼 2차원 배열을 선언하고, 검은 도화지가 붙은 부분의 값을 1로 저장한다.

겹쳐지더라도 몇번이고 1로 저장하면 되기 때문에, 여러 번 겹쳐져도 괜찮다.

후에 1의 개수를 셈으로서 검은 영역의 넓이를 계산할 수 있다.

#2563

n = int(input())

arr = [[0 for _ in range(101)] for _ in range(101)]

for i in range(n):
  x, y = map(int, input().split())

  for j in range(x, x+10):
    for k in range(y, y+10):
      arr[j][k] = 1
  
result = 0
for r in arr:
  result += r.count(1)

print(result)
반응형