😎풀이

  1. 시작점종료점이 동일한 경우 이동 거리는 없음
  2. 시계 방향과 반시계 방향의 거리 중 짧은 거리를 택함
    2-1. 시작 범위와 종료 범위로 분할
    2-2. 전체를 순회하며 합계를 구하고 그 중 시계 범위 내 요소의 합을 뺌
    2-3. 위 연산으로 시계 방향의 합을 구함
  3. 최소 거리 반환
function distanceBetweenBusStops(distance: number[], start: number, destination: number): number {
    if(start === destination) return 0
    let clockWise = 0
    let counterClockWise = 0
    let s = start < destination ? start : destination
    let e = start < destination ? destination : start
    for(let i = 0; i < distance.length; i++) {
        counterClockWise += distance[i]
        if(i >= s && i < e) clockWise += distance[i]
    }
    counterClockWise -= clockWise
    return Math.min(clockWise, counterClockWise)
};
profile
내 지식을 공유할 수 있는 대담함

0개의 댓글