본문 바로가기

코테연습문제

[백준/Python] 2563 색종이

 

처음에 한 변의 길이가 100인 도화지를 만들어야겠다는 생각을 하는게 제일 어려웠고,

그 다음부터는 크게 어려운 것이 없었다.

 

생각했던 방향은

1. 큰 도화지를 만들고(0으로 100X100 배열을 만듦)

2. 만든 도화지에 색종이들을 붙임(색종이가 붙는 위치를 1로 바꿈)

3. 색종이가 중복해서 붙는 부분의 넓이를 뺌

 

N = int(input())
result = N * 100
locations = [[0] * 101 for _ in range(101)]

for _ in range(N):
    x, y = map(int, input().split())
    for i in range(10):
        for j in range(10):
            if locations[x+i][y+j] != 1:
                locations[x+i][y+j] = 1
            else:
                result -= 1

print(result)

풀이과정

1. 0으로 100 X 100의 배열을 만듦 → 색종이를 붙일 큰 도화지 역할

2. 전체 넓이를 n X 100 해서 구해놓음(result)

3. 좌측하단 좌표가 주어지므로, 그 좌표부터 한변의 길이가 10인 색종이가 붙는 자리를 배열에서 1로 바꿈

4. 색종이를 붙일 때, 이미 1인 자리는 색종이가 붙어있는 자리이므로 중복된다고 판단하고 전체 넓이에서 1 빼기

5. 색종이가 겹치는 자리를 제외한 전체 넓이 출력