사용자로부터 입력받은 두 개의 행렬이 주어졌을 때, 두 행렬의 합을 계산하여 출력하는 것이 이 프로그램의 목표입니다. 행렬의 덧셈은 같은 위치에 있는 원소끼리 서로 더하는 연산으로, 파이썬에서는 중첩 반복문과 리스트를 활용하면 손쉽게 구현할 수 있습니다.
알고리즘
1단계: 두 개의 행렬을 입력받는다. 2단계: 중첩 for 루프를 사용하여 각 행과 열을 순회한다. 3단계: 각 반복마다 두 행렬의 대응하는 원소를 더한 뒤, 그 결과를 저장한다.
예제 코드
# 중첩 루프를 사용하여 두 행렬을 더하는 프로그램
A = []
n = int(input("N x N 행렬의 N 값 입력 : ")) # 여기서는 3을 입력
# 2차원 배열(행렬)을 저장하기 위한 리스트
print("원소를 입력하세요 ::>")
for i in range(n):
row = [] # 한 행을 임시로 저장할 리스트
for j in range(n):
row.append(int(input())) # 입력값을 row 리스트에 추가
A.append(row) # 완성된 행을 A에 추가
print(A)
# [[10, 10, 10], [20, 20, 20], [30, 30, 30]]
# 2차원 배열을 행렬 형태로 출력
print("행렬 형태로 출력")
for i in range(n):
for j in range(n):
print(A[i][j], end=" ")
print() # 줄바꿈
B = []
n = int(input("N x N 행렬의 N 값 입력 : ")) # 여기서는 3을 입력
print("원소를 입력하세요 ::>")
for i in range(n):
row = [] # 한 행을 임시로 저장할 리스트
for j in range(n):
row.append(int(input())) # 입력값을 row 리스트에 추가
B.append(row) # 완성된 행을 B에 추가
print(B)
# [[100, 100, 100], [200, 200, 200], [300, 300, 300]]
# 2차원 배열을 행렬 형태로 출력
print("행렬 형태로 출력")
for i in range(n):
for j in range(n):
print(B[i][j], end=" ")
print() # 줄바꿈
result = [[0, 0, 0], [0, 0, 0], [0, 0, 0]]
# 행(row) 순회
for i in range(n):
# 열(column) 순회
for j in range(len(A[0])):
result[i][j] = A[i][j] + B[i][j]
print("결과 행렬 ::>")
for r in result:
print(r)
실행 결과
N x N 행렬의 N 값 입력 : 3 원소를 입력하세요 ::> 10 10 10 20 20 20 30 30 30 [[10, 10, 10], [20, 20, 20], [30, 30, 30]] 행렬 형태로 출력 10 10 10 20 20 20 30 30 30 N x N 행렬의 N 값 입력 : 3 원소를 입력하세요 ::> 100 100 100 200 200 200 300 300 300 [[100, 100, 100], [200, 200, 200], [300, 300, 300]] 행렬 형태로 출력 100 100 100 200 200 200 300 300 300 결과 행렬 ::> [110, 110, 110] [220, 220, 220] [330, 330, 330]
더 간결한 방법: 리스트 컴프리헨션 활용
중첩 루프 대신 파이썬다운 리스트 컴프리헨션과 zip() 함수를 사용하면 같은 로직을 훨씬 짧은 코드로 작성할 수 있습니다.
# 인덱스 기반 리스트 컴프리헨션 result = [[A[i][j] + B[i][j] for j in range(len(A[0]))] for i in range(len(A))] # zip() 함수 활용 result = [[a + b for a, b in zip(rowA, rowB)] for rowA, rowB in zip(A, B)]
두 방식 모두 동일한 결과를 반환하지만, 리스트 컴프리헨션 방식이 더 간결하고 파이썬 스타일(Pythonic)에 가깝다는 평가를 받습니다. 반면 초보자에게는 중첩 루프 방식이 행렬 덧셈의 동작 원리를 한 단계씩 눈으로 확인할 수 있어 학습에 더 유용합니다. 상황에 맞게 두 방법을 골라 사용해 보세요.