이 글에서는 두 개의 행렬이 주어졌을 때, 두 행렬이 서로 동일한지 확인하는 파이썬 프로그램을 다룹니다. 두 행렬은 같은 차수(order)를 가지며, 두 행렬이 완전히 동일하려면 행과 열의 개수가 같아야 하고, 모든 대응하는 원소들도 서로 같아야 합니다.
알고리즘
1단계: 두 개의 행렬을 생성합니다.
2단계: 첫 번째 행렬과 두 번째 행렬의 모든 원소를 순회(traverse)하면서,
첫 번째 행렬의 각 원소를 두 번째 행렬의 해당 원소와 비교합니다.
3단계: 모든 원소가 서로 같다면 두 행렬은 동일한 것입니다.
예제 코드
아래 코드는 사용자로부터 두 개의 n×n 행렬을 입력받아, 각 원소를 비교한 뒤 두 행렬이 동일한지 판별합니다.
# 주어진 두 행렬이 동일한지
# 확인하는 프로그램
# A[][]와 B[][]가 동일하면 1을 반환하고,
# 그렇지 않으면 0을 반환하는 함수
def areSame(A, B):
for i in range(n):
for j in range(n):
if (A[i][j] != B[i][j]):
return 0
return 1
# 드라이버 코드
A = []
n = int(input("Enter n for n x n matrix : ")) # 여기서는 3 입력
# 2차원 배열을 저장하기 위해 리스트 사용
# 사용자 입력을 받아 리스트에 저장 (여기서는 1부터 9까지 입력)
print("Enter the element ::>")
for i in range(n):
row = [] # 행을 저장할 임시 리스트
for j in range(n):
row.append(int(input())) # 입력값을 행 리스트에 추가
A.append(row) # 완성된 행을 리스트에 추가
print(A)
# [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
# 2차원 배열을 행렬 형태로 출력
print("Display Array In Matrix Form")
for i in range(n):
for j in range(n):
print(A[i][j], end=" ")
print()
B = []
n = int(input("Enter N for N x N matrix : ")) # 여기서는 3 입력
# 2차원 배열을 저장하기 위해 리스트 사용
# 사용자 입력을 받아 리스트에 저장 (여기서는 1부터 9까지 입력)
print("Enter the element ::>")
for i in range(n):
row = [] # 행을 저장할 임시 리스트
for j in range(n):
row.append(int(input())) # 입력값을 행 리스트에 추가
B.append(row) # 완성된 행을 리스트에 추가
print(B)
# [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
# 2차원 배열을 행렬 형태로 출력
print("Display Array In Matrix Form")
for i in range(n):
for j in range(n):
print(B[i][j], end=" ")
print()
if (areSame(A, B) == 1):
print("Matrices are identical")
else:
print("Matrices are not identical")
# 이 코드는 Anant Agarwal이 기여했습니다.
실행 결과
Enter n for n x n matrix : 2 Enter the element ::> 1 1 2 2 [[1, 1], [2, 2]] Display Array In Matrix Form 1 1 2 2 Enter N for N x N matrix : 2 Enter the element ::> 1 1 2 2 [[1, 1], [2, 2]] Display Array In Matrix Form 1 1 2 2 Matrices are identical