n,m = map(int, input().split())
arr1 = []
arr2 = []
result = []
for i in range(n) :
arr1.append(input().split())
for j in range(n) :
arr2.append(input().split())
for i in range(n) :
add = []
for j in range(m) :
t = int(arr1[i][j]) + int(arr2[i][j])
add.append(t)
for x in add :
print(x, end=' ')
print()
나는 대충 이런식으로 코드를 작성했다. 인터넷에 다른 풀이를 찾아보니까 비슷하지만 더 이해하기 쉽게? 다음과 같은 코드로 풀었다
A, B = [], []
N, M = map(int, input().split())
for row in range(N):
row = list(map(int, input().split()))
A.append(row)
for row in range(N):
row = list(map(int, input().split()))
B.append(row)
for row in range(N):
for col in range(M):
print(A[row][col] + B[row][col], end=' ')
print()
list(map(int, input().split())) : list 로 만들어줌 !!
행렬문제에는 나도 변수 이름을 row, col 로 하는게 좋을 것 같다
이때까지 풀었던 것들 중 가장 어려웠다;; 결국 못품..
num = int(input())
arr = []
for n in range(num) :
rec = list(map(int, input().split()))
arr.append(rec)
s = []
for a in range(len(arr)) :
for b in range(a+1, len(arr)) : # arr[a][0] x , arr[a][1] y
if abs(arr[a][0] - arr[b][0]) < 10 and abs(arr[a][1] - arr[b][1]) < 10: # 겹침
over = (10-abs(arr[a][0] - arr[b][0])) * (10-abs(arr[a][1] - arr[b][1]))
s.append(over)
print(100*num - sum(s))
결국 1시간정도 고민하다가(..ㅋㅋ) 인터넷에서 푸는 방법을 참고해서 다시 풀었다.
arr = [[0]*100 for _ in range(100)]
n = int(input())
for _ in range(n) :
x,y = map(int, input().split())
for i in range(x, x+10) :
for j in range(y, y+10) :
arr[j][i] = 1
cnt = 0
for a in arr :
cnt += a.count(1)
print(cnt)
여기서 알게된 문법은..
- for _ in range(n) 여기서 굳이 변수명이 필요 없을 때는 언더바를 사용한다
- [0]*100 을 하는 것은 0이 100개 있는 배열 만들때
- [[0] for _ in range(100)] 은 [0] 리스트를 100개를 만드는 것이다. for문 밖에 배열괄호를 묶었으므로 100개의 리스트를 감싸는 리스트, 즉 2차원 배열을 만드는것)
- a.count(1) : 배열a 에서 1이 몇개인지를 찾아라