import java.util.*;
class Solution {
public int solution(int[][] sizes) {
int answer = 0;
int a = 0;
List<Integer> list = new ArrayList<>(); //가로
List<Integer> list2 = new ArrayList<>(); //세로
for(int i = 0; i< sizes.length; i++){
list.add(sizes[i][0]);
}
for(int i = 0; i< sizes.length; i++){
list2.add(sizes[i][1]);
}
Collections.sort(list);
Collections.sort(list2);
if(list.get(list.size()- 1) > list2.get(list.get(list.size()- 1))) {
a = list.get(list.size()- 1);
} else{
a = list2.get(list.size()- 1);
}
return answer;
}
}
처음엔 이런식으로 각각 가로/세로별로 리스트를 따로 만들어서 정렬 한 후 비교를 하려고 했었는데 이렇게 해버리니까 눕히는 경우를 생각하기 너무 복잡해지고 비교할 것들이 너무 많아져서 다른 방법을 생각해봤다
class Solution {
public int solution(int[][] sizes) {
int answer = 0;
int max_w = 0;
int max_h = 0;
for(int i = 0; i < sizes.length; i++){
int w = Math.max(sizes[i][0], sizes[i][1]); //가로를 기준으로 다 눕혀버리기
int h = Math.min(sizes[i][0], sizes[i][1]); //세로 길이 설정, 가로를 max로 잡았으므로 min은 자동으로 세로
max_w = Math.max(max_w, w);
max_h = Math.max(max_h, h);
}
answer = max_w * max_h;
return answer;
}
}
명함을 다 눕혀서 생각하는 방식을 사용해봤다! 훨씬 깔끔하고 적은 코드로 해결이 가능했다
class Solution {
public int solution(int[][] sizes) {
int length = 0, height = 0;
for (int[] card : sizes) {
length = Math.max(length, Math.max(card[0], card[1]));
height = Math.max(height, Math.min(card[0], card[1]));
}
int answer = length * height;
return answer;
}
}
명함을 돌리는것과 비교하는 것을 한 번에도 할 수 있다..!
'Algorithm > 프로그래머스' 카테고리의 다른 글
[고득점kit/완전탐색] 모음 사전 (0) | 2023.06.22 |
---|---|
[고득점kit/완전탐색] 소수찾기 (0) | 2023.06.21 |
[고득점kit/정렬] k번째 수 (0) | 2023.05.16 |
[Lv. 1] 같은 숫자는 싫어 (0) | 2023.05.15 |
[Lv. 1] 부족한 금액 계산하기 (0) | 2023.05.11 |
댓글