문제를 푸는 알고리즘만 알면 사실은 상당히 간단한 문제인데, 해당 알고리즘을 어떻게 설계할까 고민을 하는 과정이 있어 적어두면 좋을 것 같아 작성하게 되었다.
해당 문제를 풀기위해선 도화지의 크기인 가로 세로가 100인 점에 주목을 하자.
이차원 배열로 100 * 100 인 도화지를 그린다고 가정한다면,
array = [[0] * 100 for _ in range(100)]
위와 같이 이차원 배열로 가로와 세로의 크기가 100인 도화지를 그려낼 수 있다. 그리고 이 도화지에 입력받은 검은색 색종이의 가로 * 세로 크기 만큼 그려주면 된다.
여기서 그려준다는 것은 선언할때 넣어둔 배열의 값은 전부 0 이기 때문에 0이 아닌 수로 각각의 칸마다 그려 주면된다.
for _ in range(n):
a, b = map(int,input().split())
for i in range(a, a + 10):
for j in range(b, b + 10):
array[i][j] = 1
입력받은 검은색 색종이의 수만큼 loop를 돌면서 왼쪽 변과 아래쪽 변의 떨어진 길이를 입력받고, 입력받은 변의 길이에 맞춰 loop를 돌려준다.
(문제에서 검은색 색종이는 10 * 10의 크기로 고정되어있기에 만약 왼쪽으로부터 3 만큼 떨어진 색종이의 가로 변의 길이는 range(3, 3+10)이 된다고 볼 수 있다, 이는 세로 변의 길이도 동일하다)
n = int(input())
array = [[0] * 100 for _ in range(100)]
for _ in range(n):
a, b = map(int,input().split())
for i in range(a, a + 10):
for j in range(b, b + 10):
array[i][j] = 1
cnt = 0
for i in range(100):
cnt += array[i].count(1)
print(cnt)
세로 배열을 loop로 돌면서 행마다 검사를 통해 cnt를 누적해주고 print 하면 끄읏-!