728x90
https://www.acmicpc.net/problem/2738
2738번: 행렬 덧셈
첫째 줄에 행렬의 크기 N 과 M이 주어진다. 둘째 줄부터 N개의 줄에 행렬 A의 원소 M개가 차례대로 주어진다. 이어서 N개의 줄에 행렬 B의 원소 M개가 차례대로 주어진다. N과 M은 100보다 작거나 같
www.acmicpc.net
문제
N*M크기의 두 행렬 A와 B가 주어졌을 때, 두 행렬을 더하는 프로그램을 작성하시오.
입력
첫째 줄에 행렬의 크기 N 과 M이 주어진다. 둘째 줄부터 N개의 줄에 행렬 A의 원소 M개가 차례대로 주어진다. 이어서 N개의 줄에 행렬 B의 원소 M개가 차례대로 주어진다. N과 M은 100보다 작거나 같고, 행렬의 원소는 절댓값이 100보다 작거나 같은 정수이다.
출력
첫째 줄부터 N개의 줄에 행렬 A와 B를 더한 행렬을 출력한다. 행렬의 각 원소는 공백으로 구분한다.
코드 정답
n, m = map(int, input().split())
a, b = [], []
for i in range(n):
i = list(map(int, input().split()))
a.append(i)
for i in range(n):
i = list(map(int, input().split()))
b.append(i)
for i in range(n):
for j in range(m):
print(a[i][j] + b[i][j], end = " ")
print()
풀이
1행 : n, m 을 통해 행렬의 크기를 입력받는다.
n, m = map(int, input().split())
3행 : 행렬을 받을 리스트 a, b 를 선언한다.
a, b = [], []
5~11행 : 행렬 a, b 에 저장할 값을 n 번 입력받는다.
for i in range(n): # n 번 만큼 실행
i = list(map(int, input().split()))
a.append(i) # a[0][0] ~ a[n-1][m-1] 에 값이 저장
for i in range(n):
i = list(map(int, input().split()))
b.append(i) # b[0][0] ~ b[n-1][m-1] 에 값이 저장
- 한 행씩 입력을 받는게 조건이므로, 행의 크기만큼 입력을 반복한다.
- map 함수는 맵 객체(map object)를 반환하므로, i 에는 list 형태로 받아주어야 한다.
맵 객체는 이터레이터이기 때문에 다대다 관계에서는 list가 생략이 가능하지만, 일대다 관계에서 map 함수는 list 를 통해 값을 확인할 수 있다. - i 에 리스트 형태로 저장되어 있는 값을 각각 a 와 b 에 저장한다.
13~16행 : 행렬 a, b 에 저장되어 있는 값을 각각 더한 행렬의 값을 출력한다.
for i in range(n):
for j in range(m):
print(a[i][j] + b[i][j], end = " ")
print()
- 반복문을 이용하여 행렬 a, b 의 동일 행과 열에 저장되어 있는 값(a[0][0] + b[0][0] ~ a[n-1][m-1] + b[n-1][m-1])을 더한 후 end = " " 를 이용해 열을 띄워쓰기 구분하여 출력한다.
- end = " " 에 의해 열을 띄워쓰기로 구분하였기 때문에 하나의 열을 출력한 후 행을 바꾸기 위하여 print() 구문을 사용한다.
728x90
'BaekJoon > 단계별로 풀어보기' 카테고리의 다른 글
[백준] 기본 수학2 - 2563번 (Python) (1) | 2023.01.07 |
---|---|
[백준] 기본 수학2 - 2566번 (Python) (1) | 2023.01.06 |
[백준] 기본 수학 2 - 9020번 (Python) (0) | 2023.01.05 |
[백준] 기본 수학 2 - 4948번 (Python) (0) | 2023.01.05 |
[백준] 기본 수학 2 - 1929번 (Python) (0) | 2023.01.02 |