Data Scientist 옌

매일 발전하는 IT문제해결사

Programing 프로그래밍/코딩테스트 문제풀이

[백준] 9단계: 2차원 배열

옌炎 2023. 2. 16. 18:09
728x90

1. [2738] 행렬 덧셈

N*M크기의 두 행렬 A와 B가 주어졌을 때, 두 행렬을 더하는 프로그램을 작성하시오.

N, M = map(int, input().split())

matrix_a = []
matrix_b = []

for _ in range(N):
    matrix_a.append(list(map(int, input().split())))
for _ in range(N):
    matrix_b.append(list(map(int, input().split())))

for i in range(N):
    for j in range(M):
        print(matrix_a[i][j] + matrix_b[i][j], end=' ')
    print('')

2. [2566] 최댓값

<그림 1>과 같이 9×9 격자판에 쓰여진 81개의 자연수 또는 0이 주어질 때, 이들 중 최댓값을 찾고 그 최댓값이 몇 행 몇 열에 위치한 수인지 구하는 프로그램을 작성하시오. 예를 들어, 다음과 같이 81개의 수가 주어지면 이들 중 최댓값은 90이고, 이 값은 5행 7열에 위치한다.

  1열 2열 3열 4열 5열 6열 7열 8열 9열
1행 3 23 85 34 17 74 25 52 65
2행 10 7 39 42 88 52 14 72 63
3행 87 42 18 78 53 45 18 84 53
4행 34 28 64 85 12 16 75 36 55
5행 21 77 45 35 28 75 90 76 1
6행 25 87 65 15 28 11 37 28 74
7행 65 27 75 41 7 89 78 64 39
8행 47 47 70 45 23 65 3 41 44
9행 87 13 82 38 31 12 29 29 80

<그림 1>

matrix_a = []
for _ in range(9):
    matrix_a.append(list(map(int, input().split())))
    
row_max = []
for i in matrix_a:
    row_max.append(max(i))
    
print(max(row_max))
print(row_max.index(max(row_max))+1, matrix_a[row_max.index(max(row_max))].index(max(row_max))+1)

3. [2563] 색종이

가로, 세로의 크기가 각각 100인 정사각형 모양의 흰색 도화지가 있다. 이 도화지 위에 가로, 세로의 크기가 각각 10인 정사각형 모양의 검은색 색종이를 색종이의 변과 도화지의 변이 평행하도록 붙인다. 이러한 방식으로 색종이를 한 장 또는 여러 장 붙인 후 색종이가 붙은 검은 영역의 넓이를 구하는 프로그램을 작성하시오.

예를 들어 흰색 도화지 위에 세 장의 검은색 색종이를 그림과 같은 모양으로 붙였다면 검은색 영역의 넓이는 260이 된다.

paper = [[0 for _ in range(101)] for _ in range(101)]
for _ in range(int(input())):
    x, y = list(map(int, input().split()))
    
    for row in range(x, x+10):
        for col in range(y, y+10):
            paper[row][col] = 1

result = 0
for m in paper:
    result += m.count(1)

print(result)
728x90