https://programmers.co.kr/learn/courses/30/lessons/86491
코딩테스트 연습 - 최소직사각형
[[10, 7], [12, 3], [8, 15], [14, 7], [5, 15]] 120 [[14, 4], [19, 6], [6, 16], [18, 7], [7, 11]] 133
programmers.co.kr
기본틀
class Solution {
public int solution(int[][] sizes) {
int answer = 0;
return answer;
}
}
첫번째 시도
class Solution {
public int solution(int[][] sizes) {
int max = 0;
int index1 = 0, index2 = 0;
for(int i = 0; i < sizes.length; i++){
for(int j = 0; j < 2; j++){
if(max < sizes[i][j]){
max = sizes[i][j];
index1 = i;
index2 = j;
}
}
}
int min = 0;
int temp = 0;
int max2 = 0;
if(index2 == 0){
min = sizes[index1][1];
for(int i = 0; i < sizes.length; i++){
if(sizes[i][1] > min && sizes[i][1] > sizes[i][0]){
temp = sizes[i][0];
sizes[i][0] = sizes[i][1];
sizes[i][1] = temp;
}
}
for(int i = 0; i < sizes.length; i++){
if(max2 < sizes[i][1]){
max2 = sizes[i][1];
}
}
}else{
min = sizes[index1][0];
for(int i = 0; i < sizes.length; i++){
if(sizes[i][0] > min && sizes[i][0] > sizes[i][1]){
temp = sizes[i][0];
sizes[i][0] = sizes[i][1];
sizes[i][1] = temp;
}
}
for(int i = 0; i < sizes.length; i++){
if(max2 < sizes[i][0]){
max2 = sizes[i][0];
}
}
}
System.out.println(min + "&" + max2);
int answer = 0;
answer = max*max2;
return answer;
}
}
성공.. 하긴 했는데 내가 세상에서 제일 복잡하게 푼 듯 ㅠㅠ 내일 다시 확인해야지,,,!
↓
두번째 시도
class Solution {
public int solution(int[][] sizes) {
int tmp = 0;
for(int i = 0; i < sizes.length; i++){
if(sizes[i][0] < sizes[i][1]){
tmp = sizes[i][0];
sizes[i][0] = sizes[i][1];
sizes[i][1] = tmp;
}
}
int max_width = 0, max_length = 0;
for(int i = 0; i < sizes.length; i++){
if(max_width < sizes[i][0]){
max_width = sizes[i][0];
}
}
for(int i = 0; i < sizes.length; i++){
if(max_length < sizes[i][1]){
max_length = sizes[i][1];
}
}
int answer = max_width * max_length;
return answer;
}
}
성공!
아니 나 저번에 왜 저렇게 풀었지...? ㅋㅋㅋㅋ ㅠㅠ
'프로그래머스 > Lv.1' 카테고리의 다른 글
Lv.1 예산 (0) | 2022.06.28 |
---|---|
Lv.1 두 개 뽑아서 더하기 (0) | 2022.06.21 |
Lv.1 나머지가 1이 되는 수 찾기 (0) | 2022.06.19 |
Lv.1 부족한 금액 계산하기 (0) | 2022.06.19 |
Lv.1 2016년 (0) | 2022.06.17 |