문제 출처 - Programmers
문제는 여기
[풀이]
1. 명함의 크기를 비교해가면서 긴 변을 가로, 짧은 변을 세로로 둔다.
2. 모든 가로와 세로를 비교해 가장 큰 가로와 세로를 구해준다.
3. 2. 에서 구해진 가로와 세로의 곱을 구해 리턴해준다.
[접근]
1. 명함의 사이즈 중 긴 것을 가로, 짧은 것을 세로로 두고(명함을 회전시키기) 가장 큰 가로와 세로를 통해 면적을 구하면 되겠다고 생각하였다.
2. 모든 명함을 담기 위해서는 모든 명함의 가로 길이 중 가장 긴 것과 모든 명함의 세로 길이 중 가장 긴 것의 크기가 되면 된다.
[코드]
class Solution {
public int solution(int[][] sizes) {
int row = 0;
int col = 0;
for (int i = 0; i < sizes.length; i++) {
// 가로와 세로를 비교해 긴 것을 가로, 짧은 것을 세로로 지정
int x = Math.max(sizes[i][0], sizes[i][1]);
int y = Math.min(sizes[i][0], sizes[i][1]);
// 가로 길이 중 더 큰 것을 사용
row = Math.max(row, x);
// 세로 길이 중 더 큰 것을 사용
col = Math.max(col, y);
}
// 가장 긴 가로와 세로를 사용해 곱으로 넓이를 구해주기
return row * col;
}
}
'문제 풀이 > Programmers' 카테고리의 다른 글
[프로그래머스] 단어 변환 (JAVA) (0) | 2022.05.29 |
---|---|
[프로그래머스] 최대공약수와 최소공배수 (JAVA) (0) | 2022.05.28 |
[프로그래머스] 하샤드 수 (JAVA) (0) | 2022.05.26 |
[프로그래머스] 소수 찾기 (JAVA) (0) | 2022.05.25 |
[프로그래머스] 정수 제곱근 판별 (JAVA) (0) | 2022.05.24 |