슬기로운슬기

문제 

[완전탐색]

https://school.programmers.co.kr/learn/courses/30/lessons/86491

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

해설

class Solution {
    public int solution(int[][] sizes) {
        int[] width = new int[sizes.length];
        int[] height = new int[sizes.length];
        
        for (int i = 0; i < sizes.length; i++) {
            width[i] = Math.max(sizes[i][0], sizes[i][1]);
            height[i] = Math.min(sizes[i][0], sizes[i][1]);
        }
        
        int widthMax = findMax(width);
        int heightMax = findMax(height);
        int answer = widthMax * heightMax;
        
        return answer;
    }

    private int findMax(int[] arr) {
        if (arr == null || arr.length == 0) {
            throw new IllegalArgumentException("배열이 비어 있습니다.");
        }

        int max = arr[0];
        for (int i = 1; i < arr.length; i++) {
            if (arr[i] > max) {
                max = arr[i];
            }
        }

        return max;
    }
}
  • 높이와 너비를 둘 다 저장하는 2차원 배열로 했어도 됐을 것 같다. 
  • width[] : sizes[][] 에서 가로, 세로 중 큰 값을 가져온다.
  • height[] : sizes[][] 에서 가로, 세로 중 작은 값을 가져온다.
    • width와 height가 순서가 바껴도 상관 없음 
  • findMax() : 배열에서 가장 큰 값을 찾아주는 메서드 
반응형
profile

슬기로운슬기

@스를기

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!