[단계별로 풀어보기] - 2차원 배열

양진혁·2022년 11월 2일
0

백준

목록 보기
4/21

2738_행렬 덧셈 ∷+∷


⭕풀이:

A, B = [], []  #A, B에 행렬을 넣기 위해 리스트를 만들어둔다.

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

for row in range(N):  #N번만큼 row를 반복해라.
    row = list(map(int, input().split()))  #row는 한 칸씩 띄워쓰여진 정수 값들을 넣은 리스트이다.
    A.append(row)  #row를 A리스트에 넣어라.
for row in range(N):
    row = list(map(int, input().split()))
    B.append(row)
for row in range(N):  #N번만큼 row를 반복해라. 행렬의 가로횡
    for col in range(M):  #M번만큼 col를 반복해라. 행렬의 세로횡
        print(A[row][col] + B[row][col], end=' ')  #end = ' ' 를 통해 띄어쓰기로 열을 구분하여 출력
    print()

2566_최댓값 =행렬의 최댓값


⭕풀이:

num = 0
col = 0
row = 0
for i in range(9):
    line = list(map(int, input().split()))  #line은 한 칸씩 띄워 입력된 정수 값들을 리스트에 넣은 리스트 값이다.
    if max(line) > num:  #만약 line 리스트에 있는 값 중 가장 큰 값이 num보다 크면,
        num = max(line)  #그 값(line 리스트 중 가장 큰 값)이 num이다. -> 다음 line 리스트에서 더 큰 값이 나오면 그 값으로 계속해서 업데이트 됨.
        col = i  #col는 line리스트의 가장 큰 값이 업데이트 되면 몇 번째 반복인지 함께 업데이트 됨.
        row = line.index(num)  #row는 가장 큰 값이 있는 리스트의 몇 번째에 위치하고 있는지 나타내는 값이다.
print(num)
print(col+1, row+1)  #col(i)과 row(line.index(num)은 0번부터 횟수를 시작하기 때문에 +1을 해줘야 한다.

2563_색종이 ⬛⬜


⭕풀이:

arr = [[0]*100 for _ in range(100)]  #100*100의 모눈종이 도화지를 만들었다.

for _ in range(int(input())):  #첫줄에 입력된 값만큼 아랫 내용을 반복해라.
    m, n = map(int, input().split())  #m, n은 한 칸씩 띄워서 나열된 정수이다.
    for i in range(m, m+10):  #값을 받은 m ~ m+9만큼 i애 대입해 반복해라.
        for j in range(n, n+10):  #값을 받은 n ~ n+9만큼 j에 대입해 반복해라.
            arr[i][j] = 1  #arr[m~m+9][n~n+9]이면서 하나씩 대입해 반복해라.(ex)[3~12][7~16] -> [3][7],[3][8...]/[4][7][4][8...] 이들 하나하나 값이 처음 arr에서 입력된 0에서 1로 바꿔주는 것이다.
area = 0  #넓이
for i in arr:  #입력값이 0에서 1로 바뀐 애들을 포함한 arr을 i에 하나씩 대입해 반복해라.
    area += i.count(1)  #area는 area에 arr값이 하나씩 들어가 있는 i값에서 count를 통해 1의 갯수를 센 값을 더한 값이다.

print(area)

profile
타이밀크티는 맛있습니다.

0개의 댓글