Adventure Time - Jake [백준/python] 2563 색종이: 정사각형 넓이 구하기/ 얕은 복사에 대하여
본문 바로가기
Back-end/백준(python)

[백준/python] 2563 색종이: 정사각형 넓이 구하기/ 얕은 복사에 대하여

by bogyoi 2023. 10. 24.

 

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)] 으로 선언하는건 괜찮나? ㅇ ㅇ 괜춘