[백준 / Python] 2563번 : 색종이

개발자가 되고 싶어요 ㅣ 2023. 2. 1. 05:11

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

 

2563번: 색종이

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

www.acmicpc.net

 

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import sys
input = sys.stdin.readline
 
coordinateList = [[0]*100 for _ in range(100)]
 
for i in range(int(input())):
    x, y = map(int,input().split())
    try:
        for j in range(10):
            for k in range(10):
                coordinateList[x+j][y+k] = 1
    except:
        pass
    
cnt = 0
for l in coordinateList:
    for m in l:
        if m ==1:
            cnt+=1
            
print(cnt)
cs

 

 

도화지 변의 길이가 100으로 제한되어 있기 때문에 전체 좌표를 만들어 풀 수 있다.

[0]이 100개가 들어있는 리스트를 100개를 만들어 전체 좌표를 표현한다. 그 다음 만약 추가한 색종이의 넓이에 포함되는 좌표라면 해당 좌표의 coordinateList값을 [1]로 바꾼다. 즉 coordinateList[a][b] 는 (a,b) 좌표가 색종이의 넓이에 포함 된다면 1이 될 것이고 그게 아니라면 그대로 0일 것이다. 마지막으로 coordinateList를 순회하며 1의 갯수를 세어주면 그 값이 색종이의 넓이가 된다.

 

리뷰를 작성하면서 문제 입력 조건에 "색종이가 도화지 밖으로 나가는 경우는 없다" 라고 되어 있기 때문에 굳이 try,except로 예외처리를 할 필요가 없었던 것을 발견했다...