Leetcode Java Maximize Distance to Closest Person
업데이트:
문제
코드
class Solution {
public int maxDistToClosest(int[] seats) {
int length = seats.length;
int result = 0;
int left = -1;
for (int right = 0; right < length; right++) {
if (seats[right] == 1) {
if (left == -1) {
result = right;
} else {
result = Math.max(result, (right - left) / 2);
}
left = right;
}
}
return seats[length - 1] == 1 ? result : Math.max(result, length - 1 - left);
}
}
결과
설명
-
좌석에 사람이 있으면 1, 없으면 0으로 표시된 seats에서 좌우 사람들 간 거리가 가장 먼 자리의 위치를 찾는 문제이다.
- 문제 풀이에 필요한 변수를 정의한다.
- length는 seats의 길이를 저장한 변수이다.
- result는 좌우 사람들 간 거리가 가장 먼 거리의 위치를 저장할 변수로, 0으로 초기화한다.
- left는 좌측 사람과의 거리를 저장하기 위한 변수로, 최소 위치보다 작은 -1로 초기화한다.
- right를 0부터 length 미만까지 right를 증가시키며 아래를 반복한다.
- seats의 right번째 위치에 사람이 존재하는 1인 경우, 아래를 수행한다.
- left가 -1인 초기 위치인 경우, result에 right를 넣어준다.
- 위의 경우가 아니라면 result에 result와 $\frac{right - left}{2}$의 중간 위치를 넣어준다.
- left에 right를 넣어 마지막 사람 위치를 저장한다.
- seats의 right번째 위치에 사람이 존재하는 1인 경우, 아래를 수행한다.
- 마지막으로 seats의 마지막 위치인 $length - 1$ 뻔째 값이 1이면 result를, 0인 빈 자리이면 left와의 거리 차이와 right 중 큰 값을 주어진 문제의 결과로 반환한다.
소스
Sample Code는 여기에서 확인 가능합니다.
댓글남기기