백준 2738 (행렬 덧셈) - Python

김종언·2024년 1월 13일
0

백준

목록 보기
2/18

풀이

내 로드맵은 이러했다. A와 B라는 3x3 2차원 배열을 만들고 각각 같은 위치인 요소들끼리 더한 C라는 새로운 배열을 만들고 출력하자!

N, M = map(int, input().split())
A = []
B = []
C = []
for i in range(N):
    A.append([j for j in map(int, input().split())])
for i in range(N):
    B.append([j for j in map(int, input().split())])
for i in range(N):
    C.append([0 for k in range(M)])

for i in range(N):
    for j in range(M):
        C[i][j] = A[i][j] + B[i][j]

for i in range(N):
    for j in range(M):
        if j == M - 1:
            print(C[i][j])
        else:
            print(C[i][j], end=" ")

파이썬으로 이차원 배열은 처음 만들어봤다.

코드 풀이과정.

N, M = map(int, input().split())
A = []
B = []
C = []
for i in range(N):
    A.append([j for j in map(int, input().split())])
for i in range(N):
    B.append([j for j in map(int, input().split())])
for i in range(N):
    C.append([0 for k in range(M)])
  1. 내가 좋아하는 list comprehension으로 A와 B 안에 입력값을 요소로 가진 배열을 쏙쏙 넣어줬다. C는 어차피 A와 B를 더하기 위해 만든 배열이니 각 칸에 0을 요소로 넣어줬다.
for i in range(N):
    for j in range(M):
        C[i][j] = A[i][j] + B[i][j]
  1. C의 요소를 그 자리의 A요소 + B요소로 만들어줬다.
for i in range(N):
    for j in range(M):
        if j == M - 1:
            print(C[i][j])
        else:
            print(C[i][j], end=" ")
  1. C를 출력 조건에 맞춰 출력해줬다. 각 행이 끝날 때 줄바꿈을 해야해서 if문을 하나 썼다. print()를 한번 더 찍우면 됐는데, 좀 오바쌌다.

코멘트.

처음에 문제가 이해가 안돼서 살짝 당황했다가 이해하고나니 슥슥 풀렸다. 이차원 배열을 이전에 좀 다뤄봐서 도움이 됐다. 그리고 list comprhension은 잘 쓰면 진짜 만능인 것 같다. 간결하고 활용도 높고 최고다. 이 문제는 그냥 2차원 배열이 어떤 느낌인지 알고 가라고 만든 문제인듯. 가볍게 clear.

profile
나는 김종언이다.

0개의 댓글