파이썬 알고리즘 : 바탕화면 정리

좌표

2023년 12월 15일 알고리즘 문제풀이

문제

바탕화면 정리

난이도

Lv.1

코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
def solution(wallpaper):
    answer = []
    files_x = []
    files_y = []
    n = len(wallpaper)
    m = len(wallpaper[0])
    for i in range(n):
        for j in range(m):
            if wallpaper[i][j] == '#':
                files_x.append(i)
                files_y.append(j)
    answer.append(min(files_x))
    answer.append(min(files_y))
    answer.append(max(files_x)+1)
    answer.append(max(files_y)+1)
    return answer

처음엔 보고 조금 겁먹었지만 의외로 한번에 풀려버렸다. 존재하는 파일들을 모두 포함하는 드래그 중 가장 거리가 짧은 것을 찾기 위해 DFS나 BFS를 이용해야하나? 라는 생각을 했었다. 하지만 결국 존재하는 파일들의 x 좌표 값중 최솟값과 최댓값, y 좌표 중 최솟값과 최댓값만 찾으면 해결되는 문제였다. 조금 유의할 것은, 최댓값의 좌표에는 +1을 해주어야 한다. 파일의 좌측 상단 모서리를 기준으로하기 때문에 파일을 포함시키기 위해선 파일의 우측 하단 모서리까지 포함해야 한다.