영어 실력이 부족해서 그런지 지문을 이해하는데 조금 걸렸던 문제. N 차선의 도로에 차들이 한대씩 있고 각 차에는 왼쪽부터 0 ~ N-1 까지의 번호가 붙어 있다. 각 차들은 왼쪽으로 진로 변경, 오른쪽으로 진로 변경, 움직이지 않음 세 가지의 방향 directions 을 가지고 있고 다음 순간 모든 차량은 directions 대로 움직인다. 이 때 일어나는 충돌의 횟수를 구하는 문제.
directions을 배열로 볼 때 결국 배열의 밖으로 벗어나지 못하는 차량들은 서로 부딪힌 뒤 서게 된다. 따라서 배열의 왼쪽 또는 오른쪽 밖으로 빠져나가지 못하는 차들을 제외하고 난 뒤 제자리에서 정지 해 있는 차를 빼면 된다.
function countCollisions(directions: string): number {
let LL = 0;
let RR = directions.length - 1;
while(LL < directions.length && directions[LL] === 'L') {
LL += 1;
}
while(RR >= 0 && directions[RR] === 'R') {
RR -= 1;
}
if (LL > RR) {
return 0;
}
let collisions = RR - LL + 1;
for (let i = LL; i < RR + 1; i++) {
if (directions[i] === 'S') {
collisions -= 1;
}
}
return collisions;
};
