import java.io.*;
import java.util.*;
import java.math.*;
public class Main {
public static void main(String args[]) throws IOException {
LinkedList<Integer> list = new LinkedList<>();
list.add(1);
list.add(2);
list.add(3);
list.add(4);
print("원본",list);
ListIterator it = list.listIterator();
it.next();
it.previous();
it.remove();
print("제거 후",list);
}
public static void print(String state, LinkedList<Integer> list){
System.out.println(state);
for(int i : list){
System.out.print(i+" ");
}
System.out.print("\n");
}
}
>
BOJ 1406 에디터 문제를 풀다가 시간초과가 났다.
List의 size()메소드를 계속 호출해서 그런 듯 하다.
size()는 O(n)이다.
ListIterator는 커서를 오른쪽으로 옮기는 next()뿐 아니라
왼쪽으로 옮기는 previous()도 있기 때문에 유용하다.
위 예제코드는 빠져있지만 next(),previous()는
hasNext(),hasPrevious() 메소드로 조건검사 후에 적도록 하자.
또한 remove()는
it.previous();
it.remove();
위와같이
it.previous() 또는 it.next() 호출후에 적어주도록 하자.
previous()와 next()가 리턴한 값이 지워진다.
위와같이 동작한다.
https://www.youtube.com/watch?v=quRRkdsY13U