berry

[Programmers] 바탕화면 정리(Lv.1) - Java 본문

Problem Solving/Programmers

[Programmers] 바탕화면 정리(Lv.1) - Java

berryiscute 2023. 3. 4. 22:04
반응형

 

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

 

프로그래머스

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

programmers.co.kr

[풀이]

간단하게 생각하면

 

전체 문서를 최소한의 크기로 드래그할 수 있는 직사각형 만들기 이다.

 

2차원 배열을 for문으로 순회할 때 

 

행을 i로 두고 열을 j로 두는 편인데(사바사에요)

 

제일 왼쪽과 오른쪽 => j의 최소값과 최대값

 

제일 위쪽과 아래쪽 => i의 최소값과 최대값

 

이라 생각하고 Math.max(), Math.min()으로 값들을 각각 구한 뒤에

 

순서에 맞춰서 +1해줬음(드래그가 종료되는 좌표는 +1해줘야되더라)

 

나도애드센스 달고싶어!!!

 

[소스코드]

import java.util.*;

class Solution {
    public int[] solution(String[] wallpaper) {
        int[] answer = new int[4];
        int maxi = Integer.MIN_VALUE, 
            mini = Integer.MAX_VALUE, 
            maxj = Integer.MIN_VALUE, 
            minj = Integer.MAX_VALUE;
        
        for(int i=0;i<wallpaper.length;i++){
            for(int j=0;j<wallpaper[i].length();j++){
                if(wallpaper[i].charAt(j) == '#'){
                    maxi = Math.max(maxi, i);
                    mini = Math.min(mini, i);
                    maxj = Math.max(maxj, j);
                    minj = Math.min(minj, j);
                }
            }
        }
        
        answer[0] = mini;
        answer[1] = minj;
        answer[2] = maxi+1;
        answer[3] = maxj+1;
        
        return answer;
    }
    
}
반응형