알고리즘/프로그래머스

[프로그래머스]JAVA - Level1. 최소직사각형

K.두부 2022. 9. 3. 15:42
반응형

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

 

프로그래머스

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

programmers.co.kr

풀이

명함을 옆으로 돌려서 넣을 수 있다는 가정이 있기 때문에 가로, 세로 값이 아닌 각 명함의 큰 값과 작은 값으로 나누는게 좋다.

 

1. 각 명함의 크기에 큰 값과 작은 값으로 구분한다.

2. 가로 (큰 값)을 비교하면서 가장 큰 값을 찾는다.

3. 세로 (작은 값)을 비교하면서 가장 큰 값을 찾는다.

4. 가로 (큰 값) 과 세로 (작은 값)을 곱해서 지갑의 크기를 구한다.

class Solution {
    public int solution(int[][] sizes) {
        int big = 0;
        int small = 0;
        int temp = 0;
        
        for (int i=0; i<sizes.length; i++) {
            
            // 큰 값과 작은 값으로 나누기
            if (sizes[i][1] > sizes[i][0]) {
                temp = sizes[i][1];
                sizes[i][1] = sizes[i][0];
                sizes[i][0] = temp;
            }
            
            if (sizes[i][0] > big) {
                big = sizes[i][0];
            }
            
            if (sizes[i][1] > small) {
                small = sizes[i][1];
            }
        }
        
        return big * small;
    }
}

 

반응형