Leetcode Java Maximum Area of Longest Diagonal Rectangle

업데이트:

문제

Link

코드

class Solution {

  public int areaOfMaxDiagonal(int[][] dimensions) {
    int result = 0;
    int max = 0;
    for (int[] dimension : dimensions) {
      int diagonal = (dimension[0] * dimension[0]) + (dimension[1] * dimension[1]);
      int area = dimension[0] * dimension[1];
      if (max < diagonal || (diagonal == max && result < area)) {
        max = diagonal;
        result = area;
      }
    }
    return result;
  }

}

결과

Link

설명

  1. dimensions는 사각형의 두 변의 값들로 저장된 2차원 배열로, 가장 긴 길이의 대각선 길이를 가진 사각형의 면적을 반환한다.
    • 대각선의 길이가 동일한 경우, 가장 큰 면적을 반환하는 문제이다.
  2. 문제 풀이에 필요한 변수를 정의한다.
    • result는 결과로 반환할 가장 큰 너비를 저장할 변수로, 0으로 초기화한다.
    • max는 제곱근을 수행하지 않은 가장 큰 대각선의 길이를 저장할 변수로, 0으로 초기화한다.
      • 제곱근을 수행하지 않은 값이 더 큰 경우, 대각선의 길이도 더 길어 제곱근을 수행하지 않은 값으로 비교한다.
  3. dimensions의 각 값을 순차적으로 dimension에 넣어 아래를 수행한다.
    • 검증에 필요한 두 변수를 정의한다.
      • diagonal은 dimension의 제곱근을 수행하지 않은 대각선의 길이를 저장한 변수로, $dimension[0]^2 + dimension[1]^2$의 값으로 초기화한다.
      • area는 dimension의 면적을 저장할 변수로, $dimension[0] \times dimension[1]$의 값으로 초기화한다.
    • 아래의 두 경우 중 하나라도 만족하면 max에 diagonal의 값을 넣어주고, result에 area를 넣어준다.
      • 현재 대각선의 길이인 diagonal의 값이 기존 가장 긴 대각선의 길이인 max의 값보다 더 큰 경우.
      • 현재 대각선의 길이인 diagonal의 값과 기존 가장 긴 대각선의 길이인 max의 값이 동일하면서 area의 값이 result보다 더 큰 면적인 경우.
  4. 반복이 완료되면 조건에 만족하는 면적이 저장된 result를 주어진 문제의 결과로 반환한다.

소스

Sample Code는 여기에서 확인 가능합니다.

댓글남기기