바탕화면 정리

문제 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/161990

접근 방식

{a, b, c, d}

  1. 배열을 순서대로 돌면서, 만약 현재 문자가 # 이라면,
    • a는 좌표중에 최솟값이어야 하기 때문에, a가 현재 좌표보다 큰 경우에만 a 값을 변경한다.
    • b도 좌표중에 최솟값이어야 하기 때문에, b가 현재 좌표보다 큰 경우에만 b 값을 변경한다.
    • c는 좌표중에 최대값이어야 한다. 그리고, 파일 좌표보다 1이 커야하기 때문에 c가 현재 좌표+1 보다 작으면 좌표+1로 변경한다.
    • d도 좌표중에 최대값이어야 한다. 따라서, d가 현재 좌표+1보다 작으면 좌표+1로 변경한다.

결과

소스 코드

class Solution {
    public int[] solution(String[] wallpaper) {
        int a = Integer.MAX_VALUE;
        int b = Integer.MAX_VALUE;
        int c = 0;
        int d = -1;
        for(int i=0; i<wallpaper.length; i++){
            for(int j=0; j<wallpaper[0].length(); j++){
                char tmp = wallpaper[i].charAt(j);
                if(tmp=='#'){
                    a = a > i ? i : a;
                    b = b > j ? j : b;
                    c = c < i+1 ? i+1 : c;
                    d = d < j+1 ? j+1 : d;
                }
            }
        }
        return new int[]{a, b, c, d};
    }
}

다른 접근 방식

없음.

알게 된 점

없음.