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 |