-
BOJ2738번 : 행렬덧셈알고리즘 2023. 6. 22. 14:25
BOJ 2738번) 행렬덧셈
문제 설명
N*M크기의 두 행렬 A와 B가 주어졌을 때, 두 행렬을 더하는 프로그램을 작성하시오.
입력
첫째 줄에 행렬의 크기 N 과 M이 주어진다. 둘째 줄부터 N개의 줄에 행렬 A의 원소 M개가 차례대로 주어진다. 이어서 N개의 줄에 행렬 B의 원소 M개가 차례대로 주어진다. N과 M은 100보다 작거나 같고, 행렬의 원소는 절댓값이 100보다 작거나 같은 정수이다.
출력
첫째 줄부터 N개의 줄에 행렬 A와 B를 더한 행렬을 출력한다. 행렬의 각 원소는 공백으로 구분한다.
해결방법
리스트는 1 * M차원 행렬만을 저장하는 것이 가능함. 주워진 문제는 N*M차원행렬 두개를 만들어 두개 끼리 사칙연산을 하도록 하는 문제임.
따라서 우리의 목표는, 1*M차원 리스트를 만든 뒤, 인위적으로 조건문을 통하여 N행을 추가해주어 행렬 변수를 만든 뒤 계산하는 것이다.
따라서, 다음과 같이 해결할 수 있는 방법을 생각했다.
1. A, B는 빈 행렬이므로 A,B를 저장할 수 있는 빈 리스트를 생성한다.
2. N과 M을 입력받되, 정수형이여야 함.
3. M은 사실상 A,B에 입력이 되어있기 때문에 우리는 N의 수만큼 row을 추가해주어야 한다. A,B각각에 하면 될듯!
4. N번 동안의 반복문을 실행하면서 A와 B의 해당 위치에 있는 원소를 더한 값을 출력해준다.
풀이
A, B = [],[] # 문자열 형식의 변수 선언 1*M 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() print()
'알고리즘' 카테고리의 다른 글
파이썬(2) - 객체지향프로그래밍 (0) 2023.06.26 BOJ 2839번 : 설탕 배달 (2) 2023.06.24 파이썬(1) - 수학 (0) 2023.06.21