import sys
x = int(sys.stdin.readline())
#paper = [[0]*101 for i in range(101)]
paper=[[0 for j in range(100)] for i in range(100)]
for _ in range(x):
a,b = map(int,input().split())
for i in range(10):
for j in range(10):
paper[a+i][b+j] = 1
r = 0
for i in paper:
r += sum(i)
print(r)
100 x 100의 2차원 배열의 원소를 모두 0으로 하여 만들어준다.
변길이 10cm인 정사각형이므로 이중 for-loop의 i, j는 해당 지점으로부터 10의 범위까지의 부분들을 모두 1로 바꾸어준다.
반복문을 돌며 다 더해주면 그게 사각형의 넓이와 같다.
겹치는 부분 역시 1로 한번 더 초기화를 해줄뿐이고 다 끝난 후 더해주는거기때문에 해당하는 부분의 넓이를 구할 수 있당.
가로, 세로 100 x 100인데
행마다의 sum 한거를 r에 더해줌
원소 하나하나씩 더해주는 방식으로 2중 for-loop으로 r+=paper[i][j] 하면 되지 않을까.
paper=[[0]*100]*100 으로 2차원 배열을 생성하는건 또 다름.
*연산자를 이용해 배열을 선언하게 되면 얕은 복사가 진행됨 ..
그래서 이 방식으로 2차원배열을 선언하고 arr[0][0]=1 이런식으로 요소를 변경하게 되면 arr의 모든 행의 0열의 값이 1로 변경이 됨.
그렇다면 ?? paper = [[0]*100 for i in range(100)] 으로 선언하는건 괜찮나? ㅇ ㅇ 괜춘
'Back-end > 백준(python)' 카테고리의 다른 글
[백준/python] 9506 약수들의 합: print()의 sep옵션, 언패킹(unpacking, *) / join기능 (1) | 2023.10.25 |
---|---|
[백준/python] 2501 약수 구하기: (0) | 2023.10.25 |
[백준/python] 10798번 세로 읽기: (0) | 2023.10.24 |
[백준/python] 2566번 최댓값: 2차원 행렬에서 최댓값 찾고 해당 위치(행,열) 출력/ max(map(max, arr)) (1) | 2023.10.24 |
[백준/python] 2738번 행렬 덧셈: 행렬의 크기와 원소 받아 2차원 배열 만들기 (1) | 2023.10.24 |