개발/Algorithm
[프로그래머스] 최소 직사각형 (Java 풀이)
Dane.Kim
2023. 8. 6. 19:11


아이디어
- 배열로 받은 명함 사이즈를 긴 부분과 짧은 부분 배열 두 개로 나누어준다.
- 긴 부분에서 가장 큰 사이즈, 짧은 부분에서 가장 큰 사이즈를 구함으로써 모든 명함이 들어 갈 수 있는
사이즈를 만들 수 있게 된다.
풀이
class Solution {
public int solution(int[][] sizes) {
int answer = 0;
int[] longD = new int[sizes.length];
int[] shortD = new int[sizes.length];
//명함의 긴 부분과 짧은 부분 배열에 담기
for(int i=0;i < sizes.length;i++){
if(sizes[i][0]<sizes[i][1]){
longD[i] = sizes[i][1];
shortD[i] = sizes[i][0];
}else{
longD[i] = sizes[i][0];
shortD[i] = sizes[i][1];
}
}
//longD[마지막] => 최대값 shortD[마지막] => 최소값
for(int j=0;j < sizes.length-1;j++){
if(longD[j] > longD[j+1]){
longD[j+1] = longD[j];
}
if(shortD[j] > shortD[j+1]){
shortD[j+1] = shortD[j];
}
}
answer = longD[sizes.length-1] * shortD[sizes.length-1];
return answer;
}
}