CodingTest/Programmers

[Programmers] 최소직사각형

창브로 2025. 4. 12. 20:35

[문제 링크]

https://school.programmers.co.kr/learn/courses/30/lessons/86491?language=java

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

[풀이 과정]

명함의 가로와 세로의 길이를 정해서 주는 문제지만 명함을 돌릴 수 있다.

돌릴 수 없다면 각 명함의 '가로에서 가장 큰 값 * 세로에서 가장 큰 값'이 정답이지만

명함을 돌릴 수 있기 때문에 각 명함의 '가로 세로 중 큰 값 중에 큰 값 * 가로 세로 중 작은 값 중에 큰 값'을 곱하여

효율적인 크기로 답을 구할 수 있다.

 

[코드]

import java.util.*;

class Solution {
    public int solution(int[][] sizes) {
        int answer = 0;
        int maxValue = 0;
        int minValue = 0;
        
        for(int[] size : sizes) {
            int x = size[0];
            int y = size[1];
            
            // 각각의 명함의 가로, 세로중 큰 값끼리 비교해서 가장 큰 값 구하기
            maxValue = Math.max(maxValue, Math.max(x,y));
            
            // 각각의 명함의 가로, 세로중 작은 값끼리 비교해서 가장 작은 값 구하기
            minValue = Math.max(minValue, Math.min(x,y));
        }
        
        return maxValue * minValue;
    }
}

[회고]

쉬웠습니다.

 

 

 

 

질문과 피드백은 언제나 환영입니다.

감사합니다.