본문 바로가기
Learning-log/Algorithm 문풀

백준(파이썬, python) - 2738번 행렬 덧셈(2022.11.02)

by why제곱 2022. 11. 3.

1. 2738번

 

1) 문제

 

2) 풀이

import sys
n, m = map(int, sys.stdin.readline().split())
matrix_1 = []
for i in range(n):
        line = list(map(int, sys.stdin.readline().split()))
        matrix_1.append(line)
        
matrix_2 = []
for i in range(n):
        line = list(map(int, sys.stdin.readline().split()))
        matrix_2.append(line)


for i in range(n):
        for j in range(m):
                if j < m-1:
                        print((matrix_1[i])[j]+(matrix_2[i])[j], end = " ")
                else:
                        print((matrix_1[i])[j]+(matrix_2[i])[j])

 

3) 문법 및 풀이과정

(1) n,m값을 입력받는다. (n은 행의 개수/m은 열의 개수를 의미한다.)

(2) matrix_1 리스트를 만들어 놓은 후 for문을 n번 반복해 matrix_1에 값을 채운다. 

(3) 이때 입력되는 m개의 숫자들을 list로 받은 후 그 list를 matrix_1에 입력하여 2차원 배열을 만든다.

(4) 같은 방법으로 matrix_2를 만든다.

(5) 이중 for문을 활용해 matrix의 각 위치의 값들을 더한다. 

첫번째 for문은 각 행에 해당되는 수들을 더할 목적으로 range(n)번 반복한다. 이 때 i는 matrix_1과 matrix_2의 index에 해당하게 된다. 두번째 for문은 i번째 index에 있는 원소인 list의 index를 의미하며 행렬로서는 열을 의미한다. 따라서 range(m)만큼 for문을 반복한다. 

(6) if문을 통해 j가 m-1보다 작을 때만 end = " " 를 적용하여 줄바꿈이 아닌 띄어쓰기로 결과가 반영되도록 한다.

(7) j = m-1일때는 줄바꿈이 되도록한다. 

j는 열을 의미하므로 마지막 열인 m-1(파이썬은 0부터 시작하므로 마지막이 m-1이 된다.) 이 나올 때 줄바꿈이 되어야 다음 행이 아랫줄에 출력될 수 있기 때문이다.