wallpaper
컴퓨터 바탕화면의 상태를 나타낸 문자열 배열 | [".#...", "..#..", "...#."] | 1 ≤ wallpaper의 길이 ≤ 50, 1 ≤ wallpaper[i]의 길이 ≤ 50, wallpaper의 모든 원소의 길이는 동일
드래그의 시작점이 (lux, luy), 끝점이 (rdx, rdy)라면 정수 배열 [lux, luy, rdx, rdy]를 return
조건> 드래그 시작점 (lux, luy)와 끝점 (rdx, rdy)는 lux < rdx, luy < rdy를 만족해야 함
좌측상단에서 우측하단으로 드래그를 할 때 최소거리가 되려면 파일과 밀착하여 드래그를 해야하므로, 파일들의 최소 x,y 좌표와 최대 x,y 좌표를 고르면 답이 됨
class Solution {
public int[] solution(String[] wallpaper) {
int xMin = Integer.MAX_VALUE, yMin = Integer.MAX_VALUE;
int xMax = Integer.MIN_VALUE, yMax = Integer.MIN_VALUE;
int N = wallpaper.length, M = wallpaper[0].length();
for(int n=0; n<N; n++){
for(int m=0; m<M; m++){
if(wallpaper[n].charAt(m) == '#'){
xMin = Math.min(xMin, n);
yMin = Math.min(yMin, m);
xMax = Math.max(xMax, n+1);
yMax = Math.max(yMax, m+1);
}
}
}
return new int[]{xMin, yMin, xMax, yMax};
}
}
=> 한 파일을 기준으로 선택 가능한 드래그 구간은 4개이기 때문에 좌표를 고려해야 함
Tip : 표로 계산할 때 x,y좌표가 축을 기준으로 하는지 칸을 기준으로 하는지를 고려해야 한다.