반응형
프로그래머스 최소직사각형 - JAVA
문제 설명
- 다양한 모양과 크기의 명합들을 모두 수납할 수 있으면서, 가장 작은 명합 지갑을 만들려 한다.
- 모든 명합의 가로 길이와 세로 길이를 나타내는 2차원 배열 sizes가 배개변수로 주어진다.
- 모든 명합을 수납할 수 있는 가장 작은 지갑을 만들 때, 지갑의 크기를 return.
제한 사항
- sizes의 길이는 1 이상 10,000 이하입니다.
- sizes의 원소는 [w, h] 형식입니다.
- w는 명함의 가로 길이를 나타냅니다.
- h는 명함의 세로 길이를 나타냅니다.
- w와 h는 1 이상 1,000 이하인 자연수입니다.
문제 풀이
- 주어진 명함을 눕힐 수 있으므로, 주어진 가로, 세로 중 긴것과, 짧은 것을 구한다.
- 구한 길이를 편이상 긴 쪽을 가로, 짧은 쪽을 세로로 저장.
- 2번에서 구한 값중 가장 길이가 긴 값들을 곱해줌으로 최소 지갑 크기를 얻을 수 있다.
소스 코드
class Solution {
public int solution(int[][] sizes) {
int width = 0, height = 0;
for (int[] size : sizes) {
width = Math.max(width, Math.max(size[0], size[1]));
height = Math.max(height, Math.min(size[0], size[1]));
}
return width * height;
}
}
반응형
'알고리즘(Algorithm) > 프로그래머스(Programmers)' 카테고리의 다른 글
[프로그래머스] 부족한 금액 계산하기 - JAVA (0) | 2021.10.25 |
---|---|
[프로그래머스] 나머지가 1이 되는 수 찾기 - JAVA (0) | 2021.10.25 |
[프로그래머스] 2016년 - JAVA (0) | 2021.10.25 |
[프로그래머스] 예산 - JAVA (0) | 2021.10.24 |
[프로그래머스] 두 개 뽑아서 더하기 - JAVA (0) | 2021.10.24 |