백준 - 행렬

이진수·2024년 3월 24일
0
post-thumbnail

2차원 배열의 순회

# N: 행의 길이, M: 열의 길이

# 행 우선 순회
for i in range(N):
    for j in range(M):
        print(arr[i][j], end='')
    print()
    
# 역행 순회
for i in range(N):
	for j in range(M-1, -1, -1):
    	print(arr[i][j])
    print()
    
# 열 우선 순회
for j in range(M):
	for i in range(N):
    	print(arr[i][j])
    print()
    
# 역행 순회
for j in range(M):
	for i in range(N-1, -1, -1):
    	print(arr[i][j])
    print()

📖 2738번 행렬의 덧셈

해결

import sys
input = sys.stdin.readline
n,m = map(int, input().split())

arr1 = []
for _ in range(m):
    arr1.append(list(map(int, input().split())))

arr2 = []
for _ in range(m):
    arr2.append(list(map(int, input().split())))

for i in range(n):
    for j in range(m):
        print(arr1[i][j] + arr2[i][j], end=' ')
    print()

분석

  1. 행렬 생성 부분: 행렬의 한 행을 입력받아 정수 리스트로 변환하여 arr에 추가한다. 그리고 이를 열의 개수(m) 만큼 반복한다.

  2. 행렬의 덧셈: 행의 개수(n)만큼 반복하면서 열의 개수(m)만큼 반복하며, 두 행렬의 같은 위치에 있는 요소를 더하여 출력한다. arr1[i][j] + arr2[i][j]를 통해 같은 위치의 요소를 더하고, end=' '를 사용하여 요소들 사이에 공백을 출력한다.



📖 2566번 최댓값


해결

# sol1
import sys
input = sys.stdin.readline

arr = []
for _ in range(9):
    arr.append(list(map(int, input().split())))

max_value = max(map(max, arr))
print(max_value)

found = False
for i in range(9):
    for j in range(9):
        if arr[i][j] == max_value:
            if not found:
                print(i + 1, j + 1)
                found = True

sol2)

# sol2
table = [list(map(int, input().split())) for _ in range(9)]

max_num = 0
max_row, max_col = 0, 0
for row in range(9):
    for col in range(9):
        if max_num <= table[row][col]:
            max_row = row + 1
            max_col = col + 1
            max_num = table[row][col]

print(max_num)
print(max_row, max_col)

분석

profile
기록하는 개발자🧑🏻‍💻

0개의 댓글