리스트 컴프리헨션 문법의 중요성을 느껴버린 문제
문제 자체는 단순하다. 2차원 배열을 초기화 후 각 인덱스끼리 더해주는 간단한 문제
# 초기 풀이
A = input()
N = int(A.split()[0])
M = int(A.split()[1])
arr1 = [[0] * M for i in range(N)]
arr2 = [[0] * M for i in range(N)]
for i in range(N):
B = input()
for j in range(M):
arr1[i][j] = int(B.split()[j])
for i in range(N):
B = input()
for j in range(M):
arr2[i][j] = int(B.split()[j])
result = [[arr1[i][j] + arr2[i][j] for j in range(M)] for i in range(N)]
for i in range(N):
for j in range(M):
print(result[i][j], end=" ")
print()
리스트 컴프리헨션문법을 사용하긴 했지만 코드가 다소 길고 가독성이 많이 떨어진다.
좀더 간단하게 숏코딩을 할 방법을 찾아보았음
# 개선 풀이
N, M = map(int, input().split())
# N과 M을 map함수로 초기화
arr1 = [list(map(int, input().split())) for i in range(N)]
arr2 = [list(map(int, input().split())) for i in range(N)]
# 입력받은 문자열을 공백기준으로 list화(열) 후 N만큼 반복(행)
result = [[arr1[i][j] + arr2[i][j] for j in range(M)] for i in range(N)]
for i in range(N):
for j in range(M):
print(result[i][j], end=" ")
print()
각 행렬을 초기화 하는 부분까지 map함수와 리스트 컴프리헨션 문법을 사용하니 코드가 더욱 간결해지고 가독성이 좋아짐
아직 익숙하지 않아 좀 더 사용해봐야 할듯
'백준 > 2차원 배열' 카테고리의 다른 글
백준 - 2566 (python) (0) | 2024.02.13 |
---|---|
백준 - 10798 (python) (0) | 2024.02.13 |
백준 - 2563 (python) (0) | 2024.02.13 |