박혀노 2023. 7. 5. 10:11
728x90

📚문제

출처 : 백준 / 2738번 (https://www.acmicpc.net/problem/2738)

 

📝풀이

# 2738번 행렬 덧셈
n, m = map(int, input().split())

matrix_a = []
matrix_b = []

for _ in range(n):
    row = list(map(int, input().split()))
    matrix_a.append(row)
    
for _ in range(n):
    row = list(map(int, input().split()))
    matrix_b.append(row)
    
for row in range(n):
    for col in range(m):
        print(matrix_a[row][col] + matrix_b[row][col], end=' ')
    print()

첫번째 for문 하는 부분까진 했는데 숫자를 입력받는 부분에서 막혔다.

세 변수에 할당하는 방법을 생각했었는데 그것보다

그냥 리스트로 묶어서 변수 row에 할당한다. 그 다음 행렬 A에 저장하면 훨씬 간단하고 행렬 형태에 가까워진다.

 

덧셈하는 부분도 row와 col로 반복되는 변수명을 설정해주어 직관적으로 이해가 잘 된다.

구글링하여 제일 직관적이고 깔끔한 풀이를 참고 하였다.

 

(출처 : https://develop247.tistory.com/93)

 

 

 

+ numpy 라이브러리를 활용하는 방법

 

첫번째 코드문은 간단하지는 않지만 이런 방법도 있다는 참고용으로

두 번째 코드문은 훨씬 간단하기는 하지만 ...어쨌든 알고리즘과 파이썬 실력을 키우는 거니까 이것도 참고용으로

# 2. numpy 라이브러리 활용
import numpy as np

n, m = map(int, input(f'행과 열의 개수를 차례로 입력하세요: ').split())

# 사용자로부터 값 입력받아 n * m 행렬 생성
matrix = np.zeros((n, m))
for i in range(n):
    for j in range(m):
        value = int(input(f"값 입력 [{i+1}, {j+1}]: "))
        matrix[i][j] = value

print(matrix)
import numpy as np

# 행렬 A
A = np.array([[1, 2, 3],
              [4, 5, 6],
              [7, 8, 9]])

# 행렬 B
B = np.array([[9, 8, 7],
              [6, 5, 4],
              [3, 2, 1]])

# 행렬간의 합 계산
C = np.add(A, B)

print(C)
728x90