행렬 덧셈(2738번)

PearLine_Zero·2024년 3월 20일

하루에 1커밋 CodingTest

목록 보기
59/110
post-thumbnail
  • 티어 : Bronze 3
  • 정답여부 : 정답
  • 알고리즘 유형 : 구현, 수학,사칙연산
  • 시간 제한 : 1초

💡문제

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

💡입력

첫째 줄에 행렬의 크기 N 과 M이 주어진다. 둘째 줄부터 N개의 줄에 행렬 A의 원소 M개가 차례대로 주어진다. 이어서 N개의 줄에 행렬 B의 원소 M개가 차례대로 주어진다. N과 M은 100보다 작거나 같고, 행렬의 원소는 절댓값이 100보다 작거나 같은 정수이다.

💡출력

첫째 줄부터 N개의 줄에 행렬 A와 B를 더한 행렬을 출력한다. 행렬의 각 원소는 공백으로 구분한다.

💡예제 입력 1

3 3
1 1 1
2 2 2
0 1 0
3 3 3
4 4 4
5 5 100

💡예제 출력 1

4 4 4
6 6 6
5 6 100

💡문제요약

주어진 행렬들을 덧셈해서 나열하면 되는 문제

💡알고리즘 설계

  1. N과 M을 입력받음
  2. a,b의 리스트를 만들어줌
  3. N만큼 반복하여 숫자들을 넣어서 a에 넣어줌 b또한 마찬가지
  4. 행렬덧셈으로 배열들에 위치를 하나씩 꺼내서 더해줌

✍ 행렬 덧셈이란?

  • 행렬의 더하기는 이런 식으로 이루어짐
  • 리스트안엔 리스트가 들어갈 수 있음
a = []
a.append([1, 2, 3]) # a = [[1,2,3]]
a.append([2, 3, 4]) # a = [[1,2,3], [2,3,4]]
b = []
b.append([1,3,5]) # b = [[1,3,5]]
b.append([2,4,6]) # b = [[1,3,5],[2,4,6]]
print(a[1][1] + b[1][1]) # 3 + 4

💡작성코드

  • python
N , M = map(int, input().split())
a = []
b = []
for _ in range(N):
    line = list(map(int, input().split()))
    a.append(line)
for _ in range(M):
    line = list(map(int, input().split()))
    b.append(line) 
# 행렬 덧셈
for i in range(N):
    for j in range(M):
        print(a[i][j]+b[i][j], end=" ")
    print()       

💡틀린 이유 or 수정할 부분

다른 사람 코드를 가져와 봄 *이 신기해서 ㅎㅎ

💡틀린 부분 수정 or 다른풀이

  • python
n, m = map(int, input().split()) # n, m을 입력받음
a = [] # a를 빈 리스트로 초기화
b = [] # b를 빈 리스트로 초기화
for i in range(n): # n번 반복
    a.append(list(map(int, input().split()))) # a에 리스트로 입력받은 값을 추가
for i in range(n): # n번 반복
    b.append(list(map(int, input().split()))) # b에 리스트로 입력받은 값을 추가
for i in range(n): # n번 반복
    c = []
    for j in range(m): # m번 반복
        c.append(a[i][j]+b[i][j])
    print(*c) # 리스트앞에 *을 달면 print를 예쁘게 할 수 있습니다.

💡느낀점 or 기억할 정보

2차원 진짜 토나온다... 존나 헷갈림...

profile
https://baesaa0304.tistory.com 블로그 이사합니다~

0개의 댓글