[프로그래머스] 바탕화면 정리 자바(Java)
본문 바로가기
알고리즘 풀이

[프로그래머스] 바탕화면 정리 자바(Java)

by IYK2h 2023. 3. 26.
728x90

https://school.programmers.co.kr/learn/courses/30/lessons/161990

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

풀이

  1. '#'이 있는 위치 중에 가장 왼쪽의 값, 가장 위쪽의 값, 가장 아래쪽의 값, 가장 오른쪽의 값
  2. 주의 사항 : 가장 아래쪽의 값, 가장 오른쪽의 값 은 + 1 필요

코드

class Solution {

    public int[] solution(String[] wallpaper) {
        int startH = -1;
        int lastH = -1;

        int startW = Integer.MAX_VALUE;
        int lastW = -1;

        for (int i = 0; i < wallpaper.length; i++) {
            String str = wallpaper[i];
            if (str.contains("#")) {
                if (startH == -1) {
                    startH = i;
                }
                lastH = i + 1;

                for (int j = 0; j < str.length(); j++) {
                    if ('#' == str.charAt(j)) {
                        if (startW > j) {
                            startW = j;
                        }
                        if (lastW <= j) {
                            lastW = j + 1;
                        }
                    }
                }
            }
        }

        return new int[]{startH, startW, lastH, lastW};
    }
}

다른 사람 풀이

class Solution {
    public int[] solution(String[] wallpaper) {
        int minX = Integer.MAX_VALUE;
        int minY = Integer.MAX_VALUE;
        int maxX = Integer.MIN_VALUE;
        int maxY = 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)=='#'){
                    minX = Math.min(minX,i);
                    minY = Math.min(minY,j);
                    maxX = Math.max(maxX,i);
                    maxY = Math.max(maxY,j);
                }
            }
        }
        return new int[]{minX,minY,maxX+1,maxY+1};
    }
}
728x90

댓글