
바탕화면의 상태를 나타내는 문자열 배열
wallpaper가 주어진다.
파일은 바탕화면의 격자칸에 위치하며, 격자점은 (행, 열)의 꼴로 표시하고 왼쪽 위부터 (0, 0)으로 시작한다.
각 문자열은.와#로 이루어져 있으며, 각각 파일이 있는 칸과 빈칸을 의미한다.
모든 파일을 한번에 삭제하기 위한 최소한의 이동거리를 갖는 드래그의 시작점과 끝점의 좌표를 구하여라.
1 ≤ wallpaper의 길이 ≤ 50
1 ≤ wallpaper[i]의 길이 ≤ 50
wallpaper의 모든 원소의 길이는 동일함
wallpaper[i][j]는 바탕화면에서 i + 1행 j + 1열에 해당하는 칸의 상태를 나타냄
wallpaper[i][j]는 "#" 또는 "."의 가짐
바탕화면에는 적어도 하나의 파일이 존재함이 보장됨
드래그 시작점 (lux, luy)와 끝점 (rdx, rdy)는 lux < rdx, luy < rdy를 만족해야 함
x1, x2와 끝점을 나타내는 y1, y2로 총 4개의 변수를 사용한다.x1, x2에는 파일이 존재하는 칸의 x좌표에 대한 최소값과 최대값을 저장한다.y1, y2에는 파일이 존재하는 칸의 y좌표에 대한 최소값과 최대값을 저장한다.x1, y1, x2, y2를 원소로 하는 int 배열을 반환한다.모든 파일을 포함해야 하기 때문에 끝점의 x, y 좌표에 각각 1을 더해야 한다.
class Solution {
public int[] solution(String[] wallpaper) {
int x1, x2, y1, y2;
x1 = y1 = Integer.MAX_VALUE;
x2 = y2 = Integer.MIN_VALUE;
for(int i = 0; i < wallpaper.length; i++) {
for(int j = 0; j < wallpaper[i].length(); j++) {
if (wallpaper[i].charAt(j)=='#') {
x1 = Math.min(i, x1);
y1 = Math.min(j, y1);
x2 = Math.max(i, x2);
y2 = Math.max(j, y2);
}
}
}
return new int[]{x1, y1, x2+1, y2+1};
}
}
