Leetcode Java Queue Reconstruction by Height

업데이트:

문제

Link

코드

class Solution {

  public int[][] reconstructQueue(int[][] people) {
    Arrays.sort(people, (p1, p2) -> {
      int val = p2[0] - p1[0];
      if (val == 0) {
        val = p1[1] - p2[1];
      }
      return val;
    });
    List<int[]> result = new ArrayList<>();
    for (int[] p : people) {
      result.add(p[1], p);
    }
    return result.toArray(new int[0][]);
  }

}

결과

Link

설명

  1. 주어진 2차원 정수 배열인 people을 이용하여 아래의 조건을 활용하여 큐에 정렬하는 문제이다.
    • people[i] = [hi, ki]이며, h는 키를 k는 자신 앞에 존재하는 인원들 중 자신보다 키가 큰 인원의 수를 의미한다.
    • queue[j] = [hj, kj]이며, people이 j번째 큐에 존재하는 값을 의미한다.
  2. 주어진 조건에 맞게 정렬하기 위해 임의 두 값을 p1과 p2라고 정의하고 people을 정렬한다.
    • val에 p2의 첫 번째 값과 p1의 첫 번째 값의 차이를 넣어준다.
    • val이 0인 경우 동일한 키를 의미하므로, val에 p1의 두 번째 값과 p2의 두 번째 값을 뺀 값인 자신의 앞에 키가 큰 인원의 수의 차이를 넣어준다.
    • val이 반환된 값의 크기로 오름차순 정렬을 수행한다.
  3. 정렬된 값들을 저장할 result를 ArrayList로 초기화하고, 정렬된 people을 result의 p[1] 값 위치에 p를 넣어준다.

  4. 반복이 완료되면 reuslt를 2차원 정수 배열로 변경하여 주어진 문제의 결과로 반환한다.

소스

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

댓글남기기