[python] 2차원 배열(백준 10798번, 2563번)

이희진·2023년 2월 25일
0

2차원 배열 - 세로 읽기 (백준 10798번)

위와 같은 입력이 주어지고, 세로로 읽은 텍스트를 공백 없이 출력하라는 문제다.

solution

먼저 각 줄의 입력을 이차원 배열 형식으로 저장하고, 이중 for문으로 읽으려고 한다.
여기서 for문에 주어지는 조건문과 없을 경우 예외 처리만 잘 해주면 되지 않을까?

count_row = 0
array = []
max_count = 0
for i in range(5):
    s = input()
    array.append(list(s))
    count_row += 1
    if max_count < len(list(s)):
        max_count = len(list(s))
result = ''
for i in range(max_count):
    for j in range(len(array)):
        try:
            char = array[j][i]
            result += char
        except:
            pass
print(result)

입력을 받을 때 max_count 변수를 저장해주었다.
solved!

2차원 배열 - 색종이 (백준 2563번)

solution

처음 문제를 봤을 때는, 겹치는 부분을 구해야겠다고 판단했다. 하지만 입력 개수가 많아지면 경우의 수가 너무 많아지는 문제가 있었다.
그래서 새로운 아이디어로 100x100 짜리 배열을 이용해서 빈 공간, 혹은 붙은 공간을 0과 1로 라벨링을 해주는 방식으로 구현해보았다.

n = int(input())
arr = [[0]*100 for _ in range(100)]
for i in range(n):
    x,y = map(int, input().split(' '))
    for row in range(y, y+10):
        for col in range(x, x+10):
            arr[row][col] = 1

result = 0
cnt = 0
for i in range(100):
    for j in range(100):
        if arr[i][j] == 1:
            result += 1

print(result)

이중 배열을 생성하는 부분에서
[[0]*100 for _ in range(100)] 이 아니라 [[0]x100]x100 으로 했더니 다른 배열이 생성되었다.
이중 배열 생성 시에는 for 문을 이용하자!
solved!

0개의 댓글