// 코드
import java.util.Arrays;
class Solution {
public int solution(int[][] sizes) {
int answer = 0;
for (int i = 0; i < sizes.length; i++) {
Arrays.sort(sizes[i]);
}
int max1 = sizes[0][0];
int max2= sizes[0][1];
for (int i = 0; i < sizes.length; i++) {
if(max1 < sizes[i][0]) {
max1 = sizes[i][0];
}
}
for (int i = 0; i < sizes.length; i++) {
if(max2 < sizes[i][1]) {
max2 = sizes[i][1];
}
}
//System.out.println(max1);
//System.out.println(max2);
answer = max1 * max2;
//System.out.println(answer);
return answer;
}
}
문제풀이 과정
1) 가로와 세로 길이를 비교해야 한다. (for로 배열 하나씩 돌려서 비교를 해야 하나?)
→ 하지만 이렇게 하기에는 나중에 가로와 세로 길이를 바꿔서 생각하는 경우까지 고려해야 한다
2) 가로와 세로 중, 바꿀 것을 고려해 명함 1의 60, 50 중 큰 수를 left, 작은 수를 right로 하여 한번에 정렬하자
→ 그럼 빠르게 하는 방법은? 위의 코드처럼 [ i ] [ 0 ] 에 해당하는 인수들을 우선적으로 정렬하자
3) 이전에 많이 적용했던 Arrays 클래스의 sort() 메소드를 활용해서 정렬하자.
4) 정렬을 완료하고, left, 와 right의 최대값을 곱해 answer를 도출.
주어진 문제 사진을 정렬한 경우의 수 ex)
60 50
70 30
60 30
80 40
answer = 80 * 50 으로 최대값을 곱하면 정답이 도출.
반응형
'(문제풀이)' 카테고리의 다른 글
프로그래머스(java) : 나머지 구하기 (0) | 2022.10.05 |
---|---|
프로그래머스(java) : 두 수의 곱 (0) | 2022.10.05 |
백준 2525 (java) : 오븐 시계 (0) | 2022.10.03 |
백준 2884(java) : 알람 시계 (0) | 2022.10.03 |
백준 9498(java) : 시험 성적 (0) | 2022.10.03 |