위와 같은 입력이 주어지고, 세로로 읽은 텍스트를 공백 없이 출력하라는 문제다.
먼저 각 줄의 입력을 이차원 배열 형식으로 저장하고, 이중 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!
처음 문제를 봤을 때는, 겹치는 부분을 구해야겠다고 판단했다. 하지만 입력 개수가 많아지면 경우의 수가 너무 많아지는 문제가 있었다.
그래서 새로운 아이디어로 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!