백준/2차원 배열

백준 - 2738 (python)

SooHw 2024. 2. 13. 16:24

 

 

 

리스트 컴프리헨션 문법의 중요성을 느껴버린 문제

 

문제 자체는 단순하다. 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