빙응의 공부 블로그

[Programmers]LV.1 바탕화면 정리 본문

Argorithm

[Programmers]LV.1 바탕화면 정리

빙응이 2023. 11. 29. 18:13


📝풀이

해당 문제에서 제일 중요한 것은 문제의 이해 능력이다. 

파일을 한번에 삭제하기 위한 좌표를 구하는 문제인데

모든 파일이 범위에 있기 위해서는 

 

모든 파일의 좌표 중 (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