[백준] 1406번: 에디터 - Java

이다혜·2024년 6월 18일
0

백준

목록 보기
34/41

📎 문제 출처


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

📌 문제 설명


❓ 풀이 방법


처음에는 아래 코드처럼 커서의 위치를 int 형태로 저장하고 문자열을 substring으로 잘라서 이어 붙이는 방식으로 문제를 풀려고 했는데 커서의 위치에 따라 예외 사항도 많고 비효율적이었다.

해결책은 문자들을 삽입과 삭제가 자유로운 LinkedList에 저장하고 Iterator로 커서를 조작하는 것이었다.

특히, 그냥 Iterator가 아닌 ListIterator를 사용해야했던 이유는 Iterator는 순반향으로만 리스트 탐색이 가능하지만 ListIterator는 Iterator 인터페이스를 상속받아 여러 기능을 추가한 인터페이스로 양방향 탐색이 가능하기 때문이다.

문제를 풀면서 주의해야할 메서드는 ListIterator의 remove()메서드이다.
단순히 현재 커서 위치에서 요소를 제거해야 할 것 같지만 next()나 previous() 메소드에 의해 반환된 가장 마지막 요소를 리스트에서 제거하는 메서드 라는 점을 생각해야했다.

📌 Code



0개의 댓글