문제
https://www.acmicpc.net/problem/2738
행렬 덧셈 구하는 문제. 이러다 곱하기 나오는거 아니냐
Reference
[python] 2차원 리스트 생성 및 입력 받기, 원하는 값 찾기, 탐색, 전치 행렬 (tistory.com)
https://develop247.tistory.com/93
풀이
이거 진짜 잘못하면 곱하기 나오것다... 아무튼. 행렬의 덧셈은 개 심플한데 걍 행렬 두개를 더하면 된다. 좌표 상응하는거 걍 더하고 빼면 떙인데 이제 곱하기 나누기 들어가면 골치아픔... 아무튼. 이런 행렬의 연산은 두 행렬의 크기가 같다는 전제 하에 진행된다. 그래서 1+1로 받는건가
일단 행렬을 생성하는 방법은 간단하다. 아니 넘파이 치워봐 백준에서 넘파이 못써...
import sys
array = [[i for i in range(3,10,3)] for j in range(3)]
print(array)
import sys
M, N = map(int,sys.stdin.readline().split())
array = [[i for i in range(M)] for j in range(N)]
print(array)
이런 식으로 리스트 컴프리헨션으로도 입력받아서 만들 수 있다. 근데 저거 어떻게 하나 찾아봤더니 죄다 1차원 리스트만 있자나...
아무튼 이 문제는 저걸 기반으로 풀긴 풀어야 하는데, 입력받을 때 두 가지를 고려해야 한다. 첫번째로 행단위로 행렬 원소를 입력받는다는것과 그 행렬 입력이 1+1이라는 것... 아니 농담 아니고 진짜 1+1이여... 한번에 두개 다받음...
import sys
M, N = map(int,sys.stdin.readline().split())
array = [0 for i in range(N)]
array2 = [0 for i in range(N)]
array_sum = [[j for j in range(M)] for i in range(N)]
for i in range(N):
array[i] = list(map(int, sys.stdin.readline().split()))
for i in range(N):
array2[i] = list(map(int, sys.stdin.readline().split()))
for i in range(N):
for j in range(M):
array_sum[i][j] = array[i][j] + array2[i][j]
for i in array_sum:
for j in i:
print(j,end=" ")
print("")
그래서 이렇게 했는데 런타임에러 뜨더라니까. 혹시 왜 뜨는지 아시는 분은 제보 바랍니다. (백준은 에러가 떠도 무슨 행에서 뜨는지는 안 알려줌)
import sys
N,M = map(int,sys.stdin.readline().split())
array = []
array2 = []
for i in range(N):
i = list(map(int, sys.stdin.readline().split()))
array.append(i)
for i in range(N):
i = list(map(int, sys.stdin.readline().split()))
array2.append(i)
for x in range(N):
for y in range(M):
print(array[x][y] + array2[x][y], end=' ')
print()
이건 참고문헌에 있는 코드고
import sys
N,M = map(int,sys.stdin.readline().split())
array3 = [i for i in range(N)]
array4 = [i for i in range(N)]
for i in range(N):
array3[i] = list(map(int, sys.stdin.readline().split()))
for i in range(N):
array4[i] = list(map(int, sys.stdin.readline().split()))
for x in range(N):
for y in range(M):
print(array3[x][y] + array4[x][y], end=' ')
print()
컴프리헨션 이걸로 썼음(N만큼 일차원 배열을 만들고 일차원 배열 안에 리스트를 넣으면 2차원 배열이 된다)
'BOJ > [BOJ] Python' 카테고리의 다른 글
백준 11382번 풀이 (0) | 2023.05.28 |
---|---|
백준 2587번 풀이 (0) | 2022.11.15 |
백준 5597번 풀이 (0) | 2022.11.13 |
백준 10807번 풀이 (0) | 2022.11.13 |
백준 10815번 풀이 (0) | 2022.10.12 |