Post

05. Python(행렬 덧셈)

05. Python(행렬 덧셈)

[toc]

평점 계산기

문제

https://www.acmicpc.net/problem/2738


오답

1
2
3
4
5
6
7
8
9
10
11
12
13
import numpy as np

n, m = map(int, input().split())
if n > 100 and m > 100:
    raise ValueError("행과 열의 크기는 100을 넘을 수 없습니다.")

A_list = np.random.randint(0, 100, size=(n, m))
B_list = np.random.randint(0, 100, size=(n, m))
A_B_Sum = A_list + B_list

print(f'A_list \n {A_list}')
print(f'B_list \n {B_list}')
print(f'A_B_Sum \n {A_B_Sum}')

문제점

  • 문제의 의도를 제대로 이해 못했음
  • 행렬의 크기를 입력받고 그 후 입력값을 받는 형식으로 만들어야 하는데 난수 행렬을 만들어서 계산함

해결1

1
2
3
4
5
6
7
8
9
10
11
import sys

n, m = map(int, input().split())

A_list = [list(map(int, sys.stdin.readline().split())) for _ in range(n)] 
B_list = [list(map(int, sys.stdin.readline().split())) for _ in range(n)] 

for i in range(n):
    for j in range(m):
        print(A_list[i][j] + B_list[i][j], end=' ')
    print()
  • 온라인 코딩 플랫폼에서 readline이 제대로 작동하지 않아 런타임 에러 발생

해결2

1
2
3
4
5
6
7
8
9
10
n, m = map(int, input().split())

A_list = [list(map(int, input().split())) for _ in range(n)] 
B_list = [list(map(int, input().split())) for _ in range(n)] 

# print('결과')
for i in range(n):
    for j in range(m):
        print(A_list[i][j] + B_list[i][j], end=' ')
    print()