링크
내 풀이(O)
- 상하좌우 가장 끝에 있는 파일의 좌표를 구한다
- 정답: [가장 상단 파일의 i, 가장 좌측 파일의 j, 가장 하단 파일의 i + 1, 가장 우측 파일의 j + 1]
def solution(wallpaper):
in_y = [i for i, row in enumerate(wallpaper) if '#' in row]
i1 = in_y[0]
i2 = in_y[-1] + 1
two_dim_arr = [list(wall) for wall in wallpaper]
in_z = [j for i, row in enumerate(two_dim_arr) for j, cell in enumerate(row) if '#' in cell]
j1 = min(in_z)
j2 = max(in_z) + 1
return [i1, j1, i2, j2]
다른 풀이
- '#'이 있는 좌표의 i와 j를 한 번에 배열에 담아서 뽑아냄
def solution(wallpaper):
a, b = [], []
for i in range(len(wallpaper)):
for j in range(len(wallpaper[i])):
if wallpaper[i][j] == "#":
a.append(i)
b.append(j)
return [min(a), min(b), max(a) + 1, max(b) + 1]
검증용 코드
wallpapers = [
[".#...", "..#..", "...#."],
["..........", ".....#....", "......##..", "...##.....", "....#....."],
[".##...##.", "#..#.#..#", "#...#...#", ".#.....#.", "..#...#..", "...#.#...", "....#...."],
["..", "#."],
]
results = [
[0, 1, 3, 4],
[1, 3, 5, 8],
[0, 0, 7, 9],
[1, 0, 2, 1],
]
for idx in range(len(results)):
print(idx, '성공' if solution(wallpapers[idx]) == results[idx] else "실패")