아래 링크의 강의 중 Section 24. Step Back From the Tail
의 내용을 추려 이번 글을 작성하였습니다.
The Coding Interview Bootcamp: Algorithms + Data Structures on Udemy
function fromLast(list, n) {
let slow = list.getFirst();
let fast = list.getFirst();
while (n > 0) {
fast = fast.next;
n--;
}
while (fast.next) {
slow = slow.next;
fast = fast.next;
}
return slow;
}
눈여겨봐야 할 부분은 두 개의 while
문의 기능이다.
첫 번째
while문
n
이 0
보다 클 동안 while문
을 돌면서 변수 fast
를 한 칸씩 앞으로 전진시킨다. 결과적으로 변수 fast
에 할당된 node
의 위치는 변수 slow
에 할당된 node
보다 n
만큼 앞서게 된다.
두 번째
while문
fast.next
가 true
인 동안 변수 slow
와 fast
한 칸씩 전진시킨다. fast.next
의 값이 null
이 되는 지점이 곧 tail
을 뜻하므로 이 때의 slow
는 곧tail
에서 n
만큼 떨어진 node
와 같다.