def solution(wallpaper):
h = len(wallpaper)
w = len(wallpaper[0])
sx = h-1
sy = w-1
ex = 0
ey = 0
for x in range(h):
for y in range(w):
if wallpaper[x][y] == "#":
if sx > x: sx = x
if ex < x: ex = x
if sy > y: sy = y
if ey < y: ey = y
return [sx, sy, ex+1, ey+1]
S(sx, sy)
E(ex, ey)
[sx, sy, ex, ey]
sx
: 가장 위쪽에 있는 파일의 행 (행의 가장 작은 값)sy
: 가장 왼쪽에 있는 파일의 열 (열의 가장 작은 값)ex
: 가장 아래쪽에 있는 파일의 행 (행의 가장 큰 값)ey
: 가장 오른쪽에 있는 파일의 열 (열의 가장 큰 값)sx
, sy
, ex
, ey
의 초기값을 설정하고, 현재좌표가 이보다 더 크거나 작은 값이라면 값을 현재좌표로 바꾼다.
위의 예시에서 가장 끝점에 있는 파일의 좌표는 (2, 3)
이지만, 끝점의 파일까지 포함하려면 1을 더한 E(3,4)
까지 드래그해야한다.
def solution(wall):
a, b = [], []
for i in range(len(wall)):
for j in range(len(wall[i])):
if wall[i][j] == "#":
a.append(i)
b.append(j)
return [min(a), min(b), max(a) + 1, max(b) + 1]
파일의 좌표를 행 좌표와 열 좌표로 나누어 배열에 담고, min()
, max()
를 사용하여 간단하게 구현함.