[코테/JAVA] 연습문제 : 바탕화면 정리

    728x90
    반응형

    문제

     

     

    접근방법

    1) lux: 가장 작은 x축의 값 / rdx: 가장 큰 x축의 값으로 계산 

     

     

     

    코드

    접근방법 : 1)

    import java.util.*;
    
    class Solution {
        public int[] solution(String[] wallpaper) {
            return this.cleanUpDesktop(wallpaper);
        }
    
        public int[] cleanUpDesktop(String[] wallpaper) {
            /*
             * @Desc
             * 1.x,y좌표의 최솟값 최댓값을 구하기 위해 변수 초기화
             * 2.문자열을 String.split()으로 잘라 좌표값을 조회
             * 3.각 x,y좌표의 최솟값과 최댓값을 조회(S(lux, luy), E(rdx, rdy)
             * 4.드래그가 되면 최댓값(E)은 +1씩 늘어나게 됨
             * 5.고정배열로 리턴
             */
            int minX = wallpaper[0].split("").length, maxX = 0;
            int minY = wallpaper.length, maxY = 0;
            for (int i=0; i<wallpaper.length; i++) {
                String rows = wallpaper[i];
                for (int j=0; j<rows.split("").length; j++) {
                    String idx = rows.split("")[j];
                    if ("#".equals(idx)) {
                        minX = minX < j ? minX : j;
                        maxX = maxX > j ? maxX : j;
                        minY = minY < i ? minY : i;
                        maxY = maxY > i ? maxY : i;
                    }
                }
            }
            List<Integer> list = new ArrayList<>();
            list.add(minY);
            list.add(minX);
            list.add(maxY+1);
            list.add(maxX+1);
            return list.stream().mapToInt(i->i).toArray();
        }
    }

     

     

    결과

     

     

    주의사항

    1) 없음

    728x90
    반응형

    댓글