https://school.programmers.co.kr/learn/courses/30/lessons/161990
def solution(wallpaper):
left, up = len(wallpaper[0]), len(wallpaper)
right, down = 0,0
for i,r in enumerate(wallpaper):
for j,c in enumerate(r):
if c=='#':
up = min(up, i)
down = max(down, i)
left = min(left, j)
right = max(right, j)
return ([up, left, down+1, right+1])
파일이 있는 위치마다 인덱스를 확인해서 가장 위,왼쪽을 min으로 구하고 아래,오른쪽을 max로 구하는 식으로 코드를 작성했다.
근데..! 여기서 중요한 건 세로 방향을 y, 가로방향을 x라고 한다면,
y의 최솟값이 가장 위, 최댓값이 가장 아래이고
x의 최솟값이 가장 왼쪽, 최댓값이 가장 오른쪽이라는 점이다.
그래서 다시 코드를 작성하면
def solution(wallpaper):
row = []
column = []
for i,r in enumerate(wallpaper):
for j,c in enumerate(r):
if c=='#':
row.append(i)
column.append(j)
return [min(row), min(column), max(row)+1, max(column)+1]
for문 돌면서 파일의 인덱스만 저장해두고 마지막에 min, max로 요구하는 값들을 리턴해주면 된다.