코딩 테스트/Python

백준, Python) 2차원 배열 2566, 10798, 2563

나무늘보섬 2025. 4. 16. 18:53

2566

aMatrix = []
max = 0
for  _ in range(9):
    aMatrix.append(list(map(int, input().split())))
a,b=0,0
for i in range(9):
    for j in range(9):
        if max < aMatrix[i][j]:
            max = aMatrix[i][j]
            a,b=i,j
print(max)
print(a+1,b+1)

 

개선된 코드

->

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

max_value = -1
max_row, max_col = 0, 0

for i, row in enumerate(matrix):
    for j, val in enumerate(row):
        if val > max_value:
            max_value = val
            max_row, max_col = i, j

print(max_value)
print(max_row + 1, max_col + 1)

 

 

enumerate() 설명

 

 

start = 1로 하면 자동적으로 시작 행이 1이 됨

 


10798

wordMatrix = [input() for i in range(5)]
 
k=0
j=0
while k < 15:
    for i in range(5):
        try:
            print(wordMatrix[i][j], end= ""); k+=1
        except IndexError:
            continue
    j+=1

 


2563

paper = [[0]* 100 for _ in range(100)]
N = int(input())

for i in range(N):
    a,b = map(int, input().split())
    for i in range(a,a+10):
        for j in range(b,b+10):
            paper[i][j]=1
res = 0
for i in paper:
    res += sum(i)
print(res)

몰라서 인터넷을 찾아봄 

 

아이디어

색종이가 붙은 부분은 모두 1로 초기화, 없으면 0으로 설정

겹치는 부분을 신경쓰지 않아도 됨

-> 이미 1->1로 가는 건 넓이 즉, 배열에 영향이 없음

 

배열 탐색 하면서 1을 전부 더 함.

-> 색종이가 붙은 부분들의 합이 됨