Algorithm/자료구조

BOJ#1406 에디터

밤이2209 2016. 11. 15. 13:18

BOJ#1406 에디터


* 문제

https://www.acmicpc.net/problem/1406



* 풀이


자바에 기초가 없어서 그런지 이번 문제는 꽤 어려웠습니다 


1)

자료구조 선택 시, ArrayList 대신 LinkedList를 선택합니다.

왜냐하면 리스트 중간에서 삽입/삭제 시 LinkedList가 속도면에서 더욱 유리하기 때문입니다.


물론 index활용이 전제되어야 합니다. 중간에서 삽입/삭제 시 유리한 것은 맞지만, 그 전에 중간까지 가기 위한 검색 과정이 O(n)으로 오래 걸리기 때문입니다.


2) 

Iterator를 사용합시다.

Iterator는 Java Collection에 저장된 요소에 접근하는데 사용되는 표준화된 인터페이스입니다.


이 문제에서는 ListIterator를 사용하는 것이 좋겠습니다.


- Iterator는 단방향으로만 이동할 수 있고, 재사용이 안됩니다.

- ListIterator는 양방향으로 이동이 가능하지만, List인터페이스를 구현한 Collection에서만 사용 가능합니다.


3) 

System.out.println 사용을 최대한 줄입시다.


예) 






* 나의 코드

https://github.com/stack07142/BOJ/tree/master/BOJ%231406_Editor



해설이 도움이 되셨거나

저의 코드에서 더 수정할 점이 있다면 댓글로 알려주십시오.

'Algorithm > 자료구조' 카테고리의 다른 글

BOJ#1927 최소 힙  (0) 2017.07.20
BOJ#13414 수강신청  (0) 2016.12.01
BOJ#11656 접미사 배열  (0) 2016.11.18
BOJ#10799 쇠막대기  (0) 2016.11.14