문제
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()
반복문을 통해 동일 행과 동일 열에 위치한 원소를 더한 값을 출력하고 띄어쓰기로 열을 구분하여 출력한다.
느낀 점
아직 구현 능력에 문제가 많구나...
리스트와 맵의 중요성에 대해서 이제는 꽤 익숙해졌다는 느낌을 받았다.
인덱싱 다 까먹어서 아예 생각조차 못 하고 있었다.
줄바꿈 방법을 잘 숙지해야겠다.
'Algorithm > baekjoon' 카테고리의 다른 글
[백준] 2480번 주사위 세개 파이썬 (python) (0) | 2024.03.10 |
---|---|
[백준] 2884번 알람 시계 파이썬 (python) (0) | 2024.03.10 |
[백준] 2525번 오븐 시계 파이썬 (python) (2) | 2024.03.10 |
[백준] 11718 그대로 출력하기 파이썬 (python) (0) | 2024.03.09 |
[백준] 10951번 A+B - 4 파이썬 (python) (0) | 2024.03.08 |
댓글