[백준] 2738 행렬 덧셈

임정민·2025년 1월 20일
0
post-thumbnail

문제 설명

문제

N*M크기의 두 행렬 A와 B가 주어졌을 때, 두 행렬을 더하는 프로그램을 작성하시오.

입력

첫째 줄에 행렬의 크기 N 과 M이 주어진다. 둘째 줄부터 N개의 줄에 행렬 A의 원소 M개가 차례대로 주어진다. 이어서 N개의 줄에 행렬 B의 원소 M개가 차례대로 주어진다. N과 M은 100보다 작거나 같고, 행렬의 원소는 절댓값이 100보다 작거나 같은 정수이다.

출력

첫째 줄부터 N개의 줄에 행렬 A와 B를 더한 행렬을 출력한다. 행렬의 각 원소는 공백으로 구분한다.

입출력 예

풀이

N, M = map(int, input().split())

A = []
for _ in range(N):
    A.append(list(map(int, input().split())))

B = []
for _ in range(N):
    B.append(list(map(int, input().split())))

result = []
for i in range(N):
    row = []
    for j in range(M):
        row.append(A[i][j] + B[i][j])
    result.append(row)

for row in result:
    print(" ".join(map(str, row)))

회고

이제 입력은 알아서 잘 받아올 수 있다. 관건은 행렬을 어떻게 받아올 것인지, 그리고 어떻게 더할지가 중요했다.

A=[]
for _ in range(N):
    A.append(list(map(int, input().split())))

여기서 append() 다음에 list()가 있는 이유는 쪼갠 요소들을 리스트로 변환하기 위한 것이다. 이렇게 하면 A, B 행렬을 모두 받아오게 된다.

result = []
for i in range(N):
    row = []
    for j in range(M):
        row.append(A[i][j] + B[i][j])
    result.append(row)

for row in result:
    print(" ".join(map(str, row)))

행렬 연산에 약하지만 다행히 쉽게 해결했는데 이제는 어떻게 출력할지가 문제였다. 현재는 리스트 형태로 출력될 것이기에 각 행을 먼저 str을 통해 문자열로 변환한다. 그리고 join()을 이용해서 빈칸과 함께 출력할 수 있도록 한다.

profile
Data Science and Natural Language Processing

0개의 댓글

관련 채용 정보