Remove Nth Node From End of List

gn0lee·2022년 5월 22일
0

알고리즘

목록 보기
3/3

리트코드 19번 리스트의 n번째 노드 제거하기

문제 링크

주어진 단일 연결리스트에서 마지막에서 N번째 노드를 제거하는 문제이다.

처음 문제를 접근했을 때는 2개의 변수를 통해 한 변수가 n번 이동할 때 마다 다른 변수가 1번 이동하여 n의 간격을 유지하게 하려 했다.

1칸씩 이동할 때 마다 cnt를 1씩 증가시켜 n으로 나눈 나머지가 0 일때 다른 변수를 1칸 이동시키려 했다.

하지만 이 방법은 여러 문제가 있었다.

우선 n이 1인 경우 문제가 많았다. 나눈 나머지가 항상 0 이다 보니 조건을 나누기가 어려웠다.

그래서 해설을 찾아보게 되었다.

해설

해설의 요지는 fast와 slow를 선언하고 fast를 미리 n 만큼 전진시킨 상태로 순회를 시작하는 것이었다.

fast가 끝까지 가면 slow는 제거해야하는 노드의 바로 전 노드까지 가게 된다.

나는 문제를 읽고 마지막에 slow.next = fast 로 구현을 했는데 문제 예시를 보고 착각을 했기 때문이다.

n번째 노드를 삭제하면 slow.next = slow.next.next이어야 한다.

이는 위 해설 링크를 통해 확인하면 이해하기 쉽다.

profile
sw엔지니어가 되고싶다

0개의 댓글