
난이도: ★★☆☆☆ • solved on: 2025-11-06

자료구조
SinglyLinkedListNode : 단일 연결 리스트 노드 구조data와 next 포인터를 가짐)알고리즘/기법
핵심 키워드
- 문제 분해
- 삭제할 위치가 0이면,
head.next를 반환해야 함 → 첫 노드 삭제- 그 외의 경우, 삭제할 노드의 직전 노드까지 이동한 뒤
current.next = current.next.next로 포인터를 재연결
핵심 로직 흐름
if position == 0: return head.next else: current = head for i in 1..position-1: current = current.next current.next = current.next.next예외 처리
position == 0일 때 별도 처리 필요- 리스트의 끝 노드를 삭제할 경우
current.next가 null일 수 있으므로 접근 주의
public static SinglyLinkedListNode deleteNode(SinglyLinkedListNode llist, int position) {
SinglyLinkedListNode current = llist;
if (position == 0) {
return llist.next;
}
int cnt = 1;
while (cnt < position) {
current = current.next;
cnt++;
}
current.next = current.next.next;
return llist;
}
position == 0 조건은 대부분의 연결 리스트 문제에서 가장 자주 등장하는 예외 처리 포인트. -> 대표적인 Edge Case!비슷한 유형 (GPT 추천):
확장 문제 (GPT 추천):