알고리즘 배우기
[프로그래머스] Lv 1. 바탕화면 정리
by cwin
2024. 6. 25.
# 해당 함수는 사용하지는 않음
def distance(S, E):
dist = (E[0] - S[0]) + (E[1] - S[1])
return dist
# Bounding Box 처리와 같은 원리로 생각 sorting을 2번 진행하여 2Xnlogn 복잡도 에상
def wall_calc(wall_list, rows, cols):
wall_list.sort(key=lambda x: x[0]) #O(nlogn)
lux = wall_list[0][0]
rdx = wall_list[-1][0] + 1
#최소 y, 최대 x (좌측 상단)
wall_list.sort(key=lambda x: x[1]) #O(nlogn)
luy = wall_list[0][1]
rdy = wall_list[-1][1] + 1
#최대 y, 최소 x (우측 하단)
return [lux, luy, rdx, rdy]
# 아이콘이 존재하는 좌표만 뽑아내기
def make_wall(wallpaper):
rows = len(wallpaper)
cols = len(wallpaper[0])
wall_list = []
for row in range(rows):
for col in range(cols):
if wallpaper[row][col] == '#':
wall_list.append([row, col])
return wall_list, rows, cols
def solution(wallpaper):
wall_list, rows, cols = make_wall(wallpaper)
answer = wall_calc(wall_list, rows, cols)
return answer