Leetcode Java Car Fleet
업데이트:
문제
코드
class Solution {
public int carFleet(int target, int[] position, int[] speed) {
float[] times = new float[target];
for (int i = 0; i < position.length; i++) {
times[position[i]] = (float) (target - position[i]) / speed[i];
}
int result = 0;
float prev = 0;
for (int i = target - 1; i >= 0; i--) {
float curr = times[i];
if (curr > prev) {
prev = curr;
result++;
}
}
return result;
}
}
결과
설명
- 1차선 도로 내 차의 위치인 position와 해당 차량의 속도인 speed를 이용하여 target까지 도착할 때 까지 동일하게 도착하는 그룹의 수를 구하는 문제이다.
- 단, 1차선 도로이므로 추월이 불가능하므로 앞에 위치한 차량보다 빨라도 동일한 속도로 이동한다.
- 동일하게 도착하는 차량의 수가 둘 이상이어도 하나로 취급한다.
- 문제 풀이에 필요한 변수를 정의한다.
- cars는 남은 위치에 도달하기 위한 시간을 저장할 배열로, target 크기로 초기화하여 모든 차량을 이용하여 times 내 position에 해당하는 위치에 $\frac{target - position}{speed}$를 넣어준다.
- result는 target에 동일하게 도착하는 그룹의 수를 저장할 변수로, 0으로 초기화한다.
- prev는 이전의 가장 느린 시간을 저장할 변수로, 0으로 초기화한다.
- times를 역순으로 $target - 1$부터 0 이상까지 i를 감소시키며 아래를 반복한다.
- curr에 times의 i번째 값을 넣어준다.
- curr이 prev보다 큰 경우, prev에 curr을 넣고 result를 증가시켜 그룹을 분리해준다.
- 반복이 완료되면 그룹의 수를 저장한 result를 주어진 문제의 결과로 반환한다.
소스
Sample Code는 여기에서 확인 가능합니다.
댓글남기기