개발자는 기록이 답이다

[프로그래머스][Java][Lv.1] 최소 직사각형 본문

알고리즘/프로그래머스

[프로그래머스][Java][Lv.1] 최소 직사각형

slow-walker 2023. 10. 4. 12:28

 

 

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

 

프로그래머스

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

programmers.co.kr

 

사고력의 문제이다.

문제에서 설명하는 것처럼 최대값을 찾아서 분기처리로  가로 세로 바꿔주려고 했으면 엄청 오래 걸릴 것 같다

가로, 세로의 최대값, 최소값을 구하고 그 최대값과 최소값의 최대값을 구하면 빠르게 풀린다.

public class Solution {
    public int solution(int[][] sizes) {

        int hMax = Integer.MIN_VALUE; // 수평
        int vMax = Integer.MIN_VALUE; // 수직
        for (int i = 0; i < sizes.length; i++) {
            int h = Math.min(sizes[i][0], sizes[i][1]);
            int v = Math.max(sizes[i][0], sizes[i][1]);
            hMax=Math.max(hMax,h);
            vMax=Math.max(vMax,v);
        }
        return vMax*hMax;
    }

    public static void main(String[] args) {
        Solution T = new Solution();
        int[][] sizes1 = {{60, 50},
                           {30, 70},
                           {60, 30},
                            {80, 40}};
        System.out.println(T.solution(sizes1));
    }
}
테스트 1 통과 (0.04ms, 74.3MB)
테스트 2 통과 (0.03ms, 73.2MB)
테스트 3 통과 (0.06ms, 71.7MB)
테스트 4 통과 (0.03ms, 77MB)
테스트 5 통과 (0.04ms, 73.7MB)
테스트 6 통과 (0.03ms, 74MB)
테스트 7 통과 (0.03ms, 75.5MB)
테스트 8 통과 (0.05ms, 72.6MB)
테스트 9 통과 (0.03ms, 73.8MB)
테스트 10 통과 (0.06ms, 72.9MB)
테스트 11 통과 (0.10ms, 76.8MB)
테스트 12 통과 (0.06ms, 75.8MB)
테스트 13 통과 (0.24ms, 87MB)
테스트 14 통과 (0.28ms, 80.2MB)
테스트 15 통과 (0.63ms, 83.1MB)
테스트 16 통과 (0.71ms, 82.9MB)
테스트 17 통과 (1.52ms, 83.2MB)
테스트 18 통과 (1.81ms, 85MB)
테스트 19 통과 (1.78ms, 85.7MB)
테스트 20 통과 (1.83ms, 89MB)

 

 

참고링크 : 

https://taehoung0102.tistory.com/entry/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4%EC%9E%90%EB%B0%94-Level1-%EC%B5%9C%EC%86%8C%EC%A7%81%EC%82%AC%EA%B0%81%ED%98%95-%EC%9C%84%ED%81%B4%EB%A6%AC-8%EC%A3%BC%EC%B0%A8