자바코테 최소직사각형

konut ko·2023년 3월 27일
1

자바코테 Lv0~1

목록 보기
5/12

문제

나의 풀이

class Solution {
    public int solution(int[][] sizes) {
        int a = 0;
        int b = 0;
        if(sizes[0][0] <= sizes[0][1]){
                a = sizes[0][0];
                b = sizes[0][1];
            }else{
                a = sizes[0][1];
                b = sizes[0][0];
            }
        for(int i=0; i<sizes.length; i++){
            if(sizes[i][0] <= sizes[i][1]){
                if(a<sizes[i][0]){
                    a = sizes[i][0];
                }
                if(b<sizes[i][1]){
                    b = sizes[i][1];
                }
            }else{
                if(a<sizes[i][1]){
                    a = sizes[i][1];
                }
                if(b<sizes[i][0]){
                    b = sizes[i][0];
                }
            } 
        
        }
        int answer = a*b;
        return answer;
    }
}

남의 풀이1

class Solution {
    public int solution(int[][] sizes) {
        int answer = 0;
        int len = sizes.length;
        int w = 0;
        int h = 0;

        //작은 수가 앞에 오도록 정리
        for(int i = 0; i< len; i++){
            if(sizes[i][0] > sizes[i][1]){
                    int temp = sizes[i][0];
                    sizes[i][0] = sizes[i][1];
                    sizes[i][1] = temp;
                }
        }

        for(int j = 0; j < len; j++){
            if(sizes[j][0] > w ){
                w = sizes[j][0];
            }
            if(sizes[j][1] > h){
                h = sizes[j][1];
            }
        }

        answer = w * h;
        return answer;
    }
}

이부분이 인상적

//작은 수가 앞에 오도록 정리
        for(int i = 0; i< len; i++){
            if(sizes[i][0] > sizes[i][1]){
                    int temp = sizes[i][0];
                    sizes[i][0] = sizes[i][1];
                    sizes[i][1] = temp;
                }
        }

남의 풀이2

class Solution {
    public static int solution(int[][] sizes) {
        int minSide = 0, maxSide = 0;
        for (int[] size : sizes) {
            int min = Math.min(size[0], size[1]);
            int max = Math.max(size[0], size[1]);
            maxSide = Math.max(max, maxSide);
            minSide = Math.max(min, minSide);
        }
        return maxSide * minSide;
    }
}

for (int[] size : sizes)
for문 안에 조건식

남의 풀이3

import java.util.*;
class Solution {
    public int solution(int[][] sizes) {
        return Arrays.stream(sizes).reduce((a, b) -> new int[]{
                Math.max(Math.max(a[0], a[1]), Math.max(b[0], b[1])), Math.max(Math.min(a[0], a[1]), Math.min(b[0], b[1]))
        }).map(it -> it[0] * it[1]).get();
    }
}

reduce 메서드

profile
보초딩코라 틀린 내용 있을 수도 있습니다. 댓글 지적 환영

0개의 댓글