* 연산자를 이용해 선언하는 방법
1차원 배열을 선언할 때는 * 연산자를 이용하면 간단하게 선언할 수 있다.
size = 10
array = [0] * size
그러나, Python에서 * 연산자를 활용해 배열을 선언하는 경우 얕은 복사(shallow copy)를 활용하는 것이기 때문에 배열 내의 요소들이 같은 객체를 가리키게 된다.
그러므로 이러한 방식으로 2차원 배열을 선언하고 요소를 변경하게 되면 다른 요소들의 값도 같이 바뀌게 된다.
cols = 5
rows = 5
array = [[0] * cols] * rows
# [[0,0,0,0,0],[0,0,0,0,0],[0,0,0,0,0],[0,0,0,0,0],[0,0,0,0,0]]
array[0][0] = 1
# [[1,0,0,0,0],[1,0,0,0,0],[1,0,0,0,0],[1,0,0,0,0],[1,0,0,0,0]]
반복문(for문)을 이용해 선언하는 방법
cols = 5
rows = 5
array = [[0 for j in range(cols)] for i in range(rows)]
arr[0][0] = 1
# [[1, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0]]
2차원 배열을 입력받는 방법 _ boj 2738
import sys
n, m = map(int,sys.stdin.readline().split())
a = [list(map(int,sys.stdin.readline().split())) for i in range(n)]
b = [list(map(int,sys.stdin.readline().split())) for i in range(n)]
for i in range(n):
for j in range(m):
print(a[i][j]+b[i][j],end=" ")
print()