빙응의 공부 블로그
[Programmers]LV.1 바탕화면 정리 본문
📝풀이
해당 문제에서 제일 중요한 것은 문제의 이해 능력이다.
파일을 한번에 삭제하기 위한 좌표를 구하는 문제인데
모든 파일이 범위에 있기 위해서는
모든 파일의 좌표 중 (X의 최솟값 , Y의 최솟값)부터 (X의 최대값, Y의 최대값)을 구하면 된다.
하지만 그냥 구하는 것이 아닌 최대 값 좌표는 파일의 범위까지 생각해야한다.
해당 그림으로 보면 파일 좌표의 최소 값은 (0, 1)이고 최대 값은 (2, 3)인걸 알 수 있다.
그러나 그것은 파일의 좌표만 알려줄 뿐 파일 전체를 드레그 하는 좌표는 아니기 때문에
최대 값은 X, Y에 1씩 더 해줘야 한다.
문제만 이해하면 구현은 쉬운 문제이다.
class Solution {
public int[] solution(String[] wallpaper) {
//최대 값 최소 값 정의
int minX = 9999;
int maxX = 0;
int minY = 9999;
int maxY = 0;
for(int i = 0; i < wallpaper.length; i++){
for(int j = 0; j < wallpaper[i].length();j++){
if(wallpaper[i].charAt(j) == '#'){ //파일이 있을 때 최대, 최소 좌표 비교
if(minX > j)
minX = j;
if(maxX < j+1)
maxX = j+1;
if(minY > i)
minY = i;
if(maxY < i+1)
maxY = i+1;
}
}
}
int[] answer = {minY,minX,maxY,maxX};
return answer;
}
'Argorithm' 카테고리의 다른 글
[Programmers]LV.1 대충 만든 자판 (0) | 2023.11.30 |
---|---|
[Programmers]LV.1 덧칠하기 (0) | 2023.11.30 |
[Programmers]LV.1 공원 산책 (1) | 2023.11.29 |
[Programmers]LV.1 추억 점수 (1) | 2023.11.28 |
[Programmers]LV.1 달리기 경주 (2) | 2023.11.28 |