코딩테스트/프로그래머스
[코딩테스트] Java 최소 직사각형
[dev] hiro
2024. 11. 13. 00:36
제가 공부한 내용을 정리하는 블로그입니다.
아직 많이 부족하고 배울게 너무나도 많습니다. 틀린내용이 있으면 언제나 가감없이 말씀해주시면 감사하겠습니다😁
Programmers 알고리즘 고득점 Kit입니다.
포인트
하나의 명함의 최대 값을 가로로 설정하고 각 명함마다의 최대의 가로와 세로를 설정해야 모든 명함이 들어가는 명함 케이스의 최소 크기를 측정할 수 있습니다.
소스코드
class Solution {
public int solution(int[][] sizes) {
int row = Integer.MIN_VALUE, col = Integer.MIN_VALUE;
for(int[] size: sizes) {
row = Math.max(row, Math.max(size[0], size[1]));
col = Math.max(col, Math.min(size[0], size[1]));
}
return row * col;
}
}
코드 설명
- for(int[] size: sizes) {
row = Math.max(row, Math.max(size[0], size[1]));
col = Math.max(col, Math.min(size[0], size[1])); }
sizes 배열을 순회하면서 각 명함의 크기를 확인합니다.
- Math.max(size[0], size[1])를 사용해 현재 명함의 긴 변을 찾습니다. 이 값을 row와 비교하여 row에 더 큰 값을 저장합니다.
- Math.min(size[0], size[1])를 사용해 현재 명함의 짧은 변을 찾습니다. 이 값을 col과 비교하여 col에 더 큰 값을 저장합니다.
- return row * col
가장 큰 row와 col 값의 곱을 반환하여 지갑의 최소 크기를 계산합니다. 이 값은 모든 명함이 들어갈 수 있는 최소 크기의 지갑입니다.