[프로그래머스] 최소직사각형 (Level 1)

유진·2024년 7월 26일
0

코딩테스트

목록 보기
10/18

📝 최소직사각형 (Level 1)

완전탐색
최소직사각형

🔹Python

  • 나의 풀이
# 큰 것중에 가장 큰 거, 작은 것중에 가장 큰 거
def solution(sizes):
    answer = 0
    w = []
    h = []
    
    for i in range(len(sizes)):
        w.append(max(sizes[i][0], sizes[i][1]))
        h.append(min(sizes[i][0], sizes[i][1]))
    
    return max(w) * max(h)

w = 가로, 세로 중 큰 것
h = 가로, 세로 중 작은 것

w에서 가장 큰 것 * h에서 가장 큰 것

  • 다른 사람의 풀이
def solution(sizes):
    return max(max(x) for x in sizes) * max(min(x) for x in sizes)

한 줄로 끝내다니 ..ㅋ


🔸Java

  • 나의 풀이
import java.util.ArrayList;

class Solution {
    public int solution(int[][] sizes) {
        int answer = 0;
        ArrayList<Integer> widthList  = new ArrayList<>();
        ArrayList<Integer> heightList = new ArrayList<>();

        // 각 사각형의 너비와 높이를 리스트에 저장
        for(int i = 0 ; i<sizes.length; i++) {
            widthList.add(Math.max(sizes[i][0], sizes[i][1]));
            heightList.add(Math.min(sizes[i][0], sizes[i][1]));
        }
        
        // 최대 너비와 최대 높이를 찾기 위해 배열로 변환
        int[] width = new int[widthList.size()];
        for(int i = 0; i< width.length; i++) {
            width[i] = widthList.get(i);
        }
        
        int[] height = new int[heightList.size()];
        for(int i = 0; i< height.length; i++) {
            height[i] = heightList.get(i);
        }
        
        // 최대 너비와 최대 높이 구하기
        int maxWidth = Integer.MIN_VALUE;
        int maxHeight = Integer.MIN_VALUE;
        for (int w : width) {
            if (w > maxWidth) {
                maxWidth = w;
            }
        }
        for (int h : height) {
            if (h > maxHeight) {
                maxHeight = h;
            }
        }
        
        // 최대 너비와 최대 높이를 곱해서 넓이 계산
        answer = maxWidth * maxHeight;
        
        return answer;
    }
}

이건 아닌듯 ArrayList 안쓰는 풀이로 ...

  • 다른 사람의 풀이
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;
    }
}

for (int[] card : sizes) 이렇게 쓰는 법 익숙해져야 하는데 쉽지 않네
length랑 height를 재귀적으로 사용해서 풀었네

profile
유진진입니덩

0개의 댓글