Leetcode Java Car Fleet

업데이트:

문제

Link

코드

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;
  }

}

결과

Link

설명

  1. 1차선 도로 내 차의 위치인 position와 해당 차량의 속도인 speed를 이용하여 target까지 도착할 때 까지 동일하게 도착하는 그룹의 수를 구하는 문제이다.
    • 단, 1차선 도로이므로 추월이 불가능하므로 앞에 위치한 차량보다 빨라도 동일한 속도로 이동한다.
    • 동일하게 도착하는 차량의 수가 둘 이상이어도 하나로 취급한다.
  2. 문제 풀이에 필요한 변수를 정의한다.
    • cars는 남은 위치에 도달하기 위한 시간을 저장할 배열로, target 크기로 초기화하여 모든 차량을 이용하여 times 내 position에 해당하는 위치에 $\frac{target - position}{speed}$를 넣어준다.
    • result는 target에 동일하게 도착하는 그룹의 수를 저장할 변수로, 0으로 초기화한다.
    • prev는 이전의 가장 느린 시간을 저장할 변수로, 0으로 초기화한다.
  3. times를 역순으로 $target - 1$부터 0 이상까지 i를 감소시키며 아래를 반복한다.
    • curr에 times의 i번째 값을 넣어준다.
    • curr이 prev보다 큰 경우, prev에 curr을 넣고 result를 증가시켜 그룹을 분리해준다.
  4. 반복이 완료되면 그룹의 수를 저장한 result를 주어진 문제의 결과로 반환한다.

소스

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

댓글남기기