Leetcode Java Corporate Flight Bookings
업데이트:
문제
코드
class Solution {
public int[] corpFlightBookings(int[][] bookings, int n) {
int[] result = new int[n];
for (int[] booking : bookings) {
result[booking[0] - 1] += booking[2];
if (booking[1] < n) {
result[booking[1]] -= booking[2];
}
}
for (int i = 1; i < n; i++) {
result[i] += result[i - 1];
}
return result;
}
}
결과
설명
- 아래의 규칙을 만족하는 n개의 노선이 저장된 bookings를 이용하여 n개 노선의 각 좌석의 합계를 구하는 문제이다.
- bookings[i] = [firsti, lasti, seatsi]로, i번째 항공편은 first 부터 last까지 노선의 좌석이 seats개임을 의미한다.
-
result는 각 노선 별 좌석의 수를 계산할 변수로, n 크기의 정수 배열로 초기화한다.
- bookings의 각 배열 값을 순차적으로 booking에 넣어 아래를 수행한다.
- result의 $booking[0] - 1$번째 위치인 시작 노선에 booking[2]인 좌석 수를 더해준다.
- booking[1]이 n 미만인 경우, result의 booking[1]번째 값에 booking[2]인 좌석 수를 감소시켜준다.
- result의 시작부터 끝까지 다음 위치에 현재 값을 누계하여 주어진 문제의 결과로 반환한다.
소스
Sample Code는 여기에서 확인 가능합니다.
댓글남기기