2021 카카오 채용연계형 인턴십 3번 - 표 편집

문제 바로가기

자료구조

문제 간단 설명

Untitled

"U X": 현재 선택된 행에서 X칸 위에 있는 행을 선택합니다.
"D X": 현재 선택된 행에서 X칸 아래에 있는 행을 선택합니다.
"C" : 현재 선택된 행을 삭제한 후, 바로 아래 행을 선택합니다. 단, 삭제된 행이 가장 마지막 행인 경우 바로 윗 행을 선택합니다.
"Z" : 가장 최근에 삭제된 행을 원래대로 복구합니다. 단, 현재 선택된 행은 바뀌지 않습니다.

풀이

데이터가 있고, 없고를 1과 0으로 표현할 수 있습니다. 처음 상태는 1이고, 명령어 C로 지워진 것들은 0이 됩니다. (이미지 출처 : kakao tech)

https://user-images.githubusercontent.com/46598292/129509810-4593a4f8-97ad-483c-86e1-0b82bf1aa506.png

위 그림에서, 하늘색 부분이 커서라고 합시다. "U 3" 명령을 만났을 때 합이 처음 3이 되는 부분으로 커서가 이동합니다.

이 아이디어로 구현하기 위해, 구간 합을 빠르게 구할 수 있는 세그먼트 트리를 사용할 수 있습니다.

명령어별 풀이