[Kotlin/프로그래머스] 코딩테스트 연습 > 완전탐색 > 최소직사각형

👀 문제

https://school.programmers.co.kr/learn/courses/30/lessons/86491?language=kotlin

👊 도전

1. 설계

  1. 문제 조건에 맞게 진행

2. 구현

1
2
3
4
5
6
7
8
class Solution {
   fun solution(sizes: Array<IntArray>): Int {
      sizes.forEach {  size ->
         size.sortDescending()
      }
      return sizes.maxOf { it[0] } * sizes.maxOf { it[1] }
   }
}

3. 결과

실행결과 🤟 성공 🤟

4. 설명

  1. sizes[i][0], sizes[i][1]은 가로, 세로가 정해져 있지 않다
    • 문제 설명에서는 가로, 세로 길이를 지정했지만 명함을 어떻게 놓느냐에 따라 가로, 세로 값이 달라진다.
    • 가로를 큰 변으로 한다고 가정하고 size를 정렬한다. (sizes[i][0]을 가로라고 가정한다)
    • 가로가 결정되면 세로도 자동으로 결정된다.
  2. 모든 변을 충족시키기 위해 max값을 선택한다
    • sizes[i][0], sizes[i][1]의 최대값을 찾고 두 값을 곱한 값(넓이)가 모든 명함을 만족할 수 있는 지갑의 크기가 된다.

👏 해결 완료!