괄호 문자열 편집기
시간 제한3초메모리 제한2048 MB
커서로 괄호 문자열을 편집하는 과정을 시뮬레이션하고, 문자열이 올바른 괄호 문자열일 때마다 그 연산 번호를 C에 XOR합니다.
문제
올바른 괄호 문자열은 다음과 같이 정의한다.
- 빈 문자열 은 올바른 괄호 문자열이다.
- 가 올바른 괄호 문자열이면, 를 괄호로 둘러싼 도 올바른 괄호 문자열이다.
- 와 가 올바른 괄호 문자열이면, 둘을 이어 붙인 도 올바른 괄호 문자열이다.
텍스트 편집기를 관리하면서 편집기의 텍스트가 올바른 괄호 문자열인지 실시간으로 판정해야 한다. 구현할 편집기는 다음 명세를 따른다.
처음에 편집기의 텍스트는 빈 문자열 이다. 편집기에는 커서가 하나 있다. 텍스트가 이고 커서의 위치가 일 때, 편집기가 지원하는 동작은 다음과 같다.
(: 의 번째 문자와 번째 문자 사이에(를 삽입하고, 커서를 오른쪽으로 1만큼 옮긴다. 이면 문자열 맨 앞에, 이면 맨 끝에 삽입한다.): 의 번째 문자와 번째 문자 사이에)를 삽입하고, 커서를 오른쪽으로 1만큼 옮긴다. 이면 문자열 맨 앞에, 이면 맨 끝에 삽입한다.<: 커서를 왼쪽으로 1만큼 옮긴다. 단, 이면 커서는 움직이지 않는다.>: 커서를 오른쪽으로 1만큼 옮긴다. 단, 이면 커서는 움직이지 않는다.X: 의 번째 문자를 삭제하고, 커서를 왼쪽으로 1만큼 옮긴다. 이면 아무 일도 일어나지 않는다.
이 동작 정의에 따라 매 순간 가 성립하며, 처음 는 0이다.
각 동작을 수행한 뒤 가 올바른 괄호 문자열인지 기록해야 한다. 편집기에는 변수 가 있으며, 처음 값은 0이다.
번째 동작을 수행한 뒤 가 올바른 괄호 문자열이면, 의 값을 로 바꾼다. 여기서 는 비트 XOR이다.
명세대로 편집기를 구현한 뒤, 개의 동작을 모두 수행하고 마지막에 얻은 의 값을 출력하는 프로그램을 작성하라.
입력
첫 번째 줄에 수행할 동작의 수 가 주어진다. ()
두 번째 줄에 수행할 동작을 순서대로 늘어놓은 길이 의 문자열 가 주어진다.
출력
개의 동작을 모두 수행한 뒤 얻은 의 값을 한 줄에 출력한다.
힌트
예제 입출력에서 각 동작을 수행한 후 텍스트, 커서, 변수 의 상태는 아래와 같다.