"U X": 현재 선택된 행에서 X칸 위에 있는 행을 선택합니다.
"D X": 현재 선택된 행에서 X칸 아래에 있는 행을 선택합니다.
"C" : 현재 선택된 행을 삭제한 후, 바로 아래 행을 선택합니다. 단, 삭제된 행이 가장 마지막 행인 경우 바로 윗 행을 선택합니다.
"Z" : 가장 최근에 삭제된 행을 원래대로 복구합니다. 단, 현재 선택된 행은 바뀌지 않습니다.
데이터가 있고, 없고를 1과 0으로 표현할 수 있습니다. 처음 상태는 1이고, 명령어 C로 지워진 것들은 0이 됩니다. (이미지 출처 : kakao tech)
위 그림에서, 하늘색 부분이 커서라고 합시다. "U 3" 명령을 만났을 때 합이 처음 3이 되는 부분으로 커서가 이동합니다.
이 아이디어로 구현하기 위해, 구간 합을 빠르게 구할 수 있는 세그먼트 트리를 사용할 수 있습니다.