문제풀이/프로그래머스
바탕화면 정리(프로그래머스) 문제풀이
soo-dal
2024. 2. 18. 12:26
문제
https://school.programmers.co.kr/learn/courses/30/lessons/161990
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제 접근 방식
바탕화면의 모든 파일을 최소한의 크기로 한 번에 선택해야하는 문제이며, 이를 위해서는 상하좌우로 가장 끝 위치를 구해서 드래그하면 된다. 즉, wallpaper를 순회하면서 top, bottom, left, right의 끝 좌표를 구하고 이를 반환한다. 이때 주의할 점은 드래그의 좌표는 격자점이기 때문에 bottom, right 의 좌표는 1 씩 추가해서 반환해야 한다.
시간 복잡도
NxM 크기의 이차원 배열인 wallpaper를 순회해야하기 때문에 O(NM)이 걸리며, N과 M의 최댓값이 50이므로 시간 내에 동작한다.
코드
def solution(wallpaper):
n=len(wallpaper)
m=len(wallpaper[0])
min_l,max_r,min_t,max_b=m-1,0,n-1,0
for i in range(n):
for j in range(m):
if wallpaper[i][j]=='#':
min_l=min(min_l,j)
max_r=max(max_r,j)
min_t=min(min_t,i)
max_b=max(max_b,i)
answer = [min_t,min_l,max_b+1,max_r+1]
return answer