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을 해주어야 한다. 파일의 좌측 상단 모서리를 기준으로하기 때문에 파일을 포함시키기 위해선 파일의 우측 하단 모서리까지 포함해야 한다.