본문 바로가기
Algorithm/baekjoon

[백준] 2738번 행렬 덧셈 파이썬 (python)

by eoieiie 2024. 3. 9.

문제

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

 

 

정답코드

A, B = [], []

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

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

for row in range(N):
    row = list(map(int, input().split()))
    B.append(row)
    
for row in range(N):
    for col in range(M):
        print(A[row][col] + B[row][col], end=' ')
    print()

 

풀이

1. 행과 열이 저장될 리스트 A, B를 선언한다.

A, B = [], []

 

 

2. N 과 M을 통해 행렬의 크기를 입력받는다.

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

 

 

3. 행렬의 원소를 입력받는다. 한 행씩,  입력받은 값을 리스트로 변환하여 행의 안에 넣는다.

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

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

 

 

4. 이 부분이 가장 까다로울 것인데, 각 행렬의 요소를 꺼내와서 더하는 과정이다.

  • 더하는 과정이 3번씩 3줄 총 9번 반복될 것이다. 
  • 리스트 안의 리스트의 원소들에 인덱싱으로 접근해야 한다. 
for row in range(N):
    for col in range(M):
        print(A[row][col] + B[row][col], end=' ')
    print()

 

반복문을 통해 동일 행과 동일 열에 위치한 원소를 더한 값을 출력하고 띄어쓰기로 열을 구분하여 출력한다. 

 

느낀 점

아직 구현능력에 문제가 많구나... 

리스트와 맵의 중요성과 이제는 꽤 익숙해졌다는 느낌을 받았다.

인덱싱 다 까먹어서 아예 생각조차 못 하고 있었다. 

줄바꿈 방법을 잘 숙지해야겠다.

 

댓글