본문 바로가기
알고리즘/[프로그래머스] JAVA

[프로그래머스] 최소직사각형

by 코딩맛집 2024. 4. 13.

문제 :

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

 

프로그래머스

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

programmers.co.kr

 

해결 :

class Solution {
    public int solution(int[][] sizes) {
        int ga = sizes[0][0];
        int se = sizes[0][1];
        
        //가로, 세로 중에 가장 큰 길이를 골라서. 기준 길이로 잡는다.
        for(int i = 0; i<sizes.length; i++){
            ga = Math.max(ga, sizes[i][0]);
            se = Math.max(se, sizes[i][1]);
        }
        int maxlen = Math.max(ga, se);
        int minlen = Math.min(sizes[0][0], sizes[0][1]);
        
        //다시 배열을 for문으로 돌며 배열마다 가로세로 비교하며 작은 숫자중에 큰 길이를 찾는다.
        for(int i = 0; i<sizes.length; i++){
            int gase = Math.min(sizes[i][0], sizes[i][1]);
            if(gase >= minlen) minlen = gase;  
        }
        return minlen*maxlen;
    }
}

 

다른 사람 풀이 :

class Solution {
    public int solution(int[][] sizes) {
        int length = 0, height = 0;
        for (int[] card : sizes) {
            length = Math.max(length, Math.max(card[0], card[1]));
            height = Math.max(height, Math.min(card[0], card[1]));
        }
        int answer = length * height;
        return answer;
    }
}

sizes 2차원 배열을 for문으로 1차원 배열로 만들어서

가장 긴 길이 구하고

1차원 배열에서 작은 것중에 큰 길이 구하면되는 간단한 로직이였다..

'알고리즘 > [프로그래머스] JAVA' 카테고리의 다른 글

[프로그래머스] 카펫  (0) 2024.04.14
[프로그래머스] 피로도  (0) 2024.04.14
[프로그래머스] 모의고사  (0) 2024.04.10
[프로그래머스] H-Index  (0) 2024.03.24
[프로그래머스] 예산  (0) 2024.03.24