Logo
(追記) (追記ここまで)

32966번 - 괄호 문자열 편집기 서브태스크

시간 제한메모리 제한제출정답맞힌 사람정답 비율
3 초 2048 MB126211322.807%

문제

올바른 괄호 문자열은 다음과 같이 정의됩니다.

  • 빈 문자열 $\varnothing$은 올바른 괄호 문자열입니다.
  • $A$가 올바른 괄호 문자열이라면, $A$를 괄호로 둘러싼 $(A)$ 또한 올바른 괄호 문자열입니다.
  • $A$와 $B$가 올바른 괄호 문자열이라면, $A$와 $B$를 붙인 $AB$ 또한 올바른 괄호 문자열입니다.

여러분은 이 문제에서 텍스트 편집기를 관리하면서 현재 편집기의 텍스트가 올바른 괄호 문자열인지의 여부를 실시간으로 판정해야 합니다. 구현해야 하는 텍스트 편집기는 다음과 같은 명세를 따릅니다.

초기에 편집기의 텍스트는 빈 문자열 $\varnothing$입니다. 이 편집기에는 하나의 커서가 있습니다. 편집기의 텍스트가 $S$이고 커서의 위치가 $j$일 때, 편집기가 지원해야 하는 동작은 아래와 같이 정의됩니다.

  • (: $S$의 $j$번째 문자와 $j+1$번째 문자 사이에 문자 (를 삽입하고 커서의 위치를 1ドル$만큼 뒤로 옮깁니다. $j=0$인 경우 문자열의 맨 앞에, $j=|S|$인 경우 끝에 문자를 삽입합니다.
  • ): $S$의 $j$번째 문자와 $j+1$번째 문자 사이에 문자 )를 삽입하고 커서의 위치를 1ドル$만큼 뒤로 옮깁니다. $j=0$인 경우 문자열의 맨 앞에, $j=|S|$인 경우 끝에 문자를 삽입합니다.
  • <: 커서의 위치를 1ドル$만큼 앞으로 옮깁니다. 단, $j=0$인 경우 커서는 움직이지 않습니다.
  • >: 커서의 위치를 1ドル$만큼 뒤로 옮깁니다. 단, $j=|S|$인 경우 커서는 움직이지 않습니다.
  • X: $S$의 $j$번째 문자를 삭제하고 커서의 위치를 1ドル$만큼 앞으로 옮깁니다. $j=0$인 경우에는 아무것도 하지 않습니다.

편집기가 지원하는 동작의 정의에 의해 매 순간 0ドル \le j \le |S|$가 성립하며, 초기에 $j$의 값은 0ドル$입니다.

각 동작이 시행된 후에 여러분은 편집기의 텍스트 $S$가 올바른 괄호 문자열인지 기록해야 합니다. 편집기에는 이를 위한 변수 $C$가 있으며, 초기에 그 값은 0ドル$입니다.

각 동작이 시행된 후 여러분은 $C$를 다음과 같이 변경해야 합니다.

  • $i$번째 동작을 수행한 후 $S$가 올바른 괄호 문자열이라면 $C$의 값을 $C \oplus i$으로 변경합니다.$^\dagger$

여러분은 명세에 따라 편집기를 구현한 뒤, $Q$개의 동작을 수행하여 마지막에 얻은 $C$의 값을 출력하는 프로그램을 작성해야 합니다.

$^\dagger$ 두 정수 $x$와 $y$가 주어질 때 $x \oplus y$는 두 정수의 비트 XOR을 의미하며, 대부분 프로그래밍 언어에서 (x ^ y)와 같이 사용할 수 있습니다.

입력

첫 번째 줄에 수행해야 하는 동작의 수 $Q$가 주어집니다. (1ドル \le Q \le 10,円 000,円 000$)

두 번째 줄에 수행해야 하는 동작을 모두 순서대로 늘어놓은 길이 $Q$의 문자열 $P$가 주어집니다.

출력

$Q$개의 동작을 모두 수행한 뒤 마지막에 얻은 $C$의 값을 한 줄에 출력합니다.

제한

서브태스크

번호배점제한
17

$Q \le 300$

29

$Q \le 2000$

319

$Q \le 80,円 000$

423

$Q \le 200,円 000$

542

추가 제약 조건이 없습니다.

예제 입력 1

10
)<(<()X())

예제 출력 1

11

힌트

예제 입출력에서 각 동작을 수행한 후 텍스트와 커서, 변수 $C$의 상태는 아래와 같습니다.

동작의 종류 편집기의 텍스트 커서의 위치 올바른 괄호 문자열? $C$
) ")" 1ドル$ 아니오 0ドル$
< ")" 0ドル$ 아니오 0ドル$
( "()" 1ドル$ 3ドル$
< "()" 0ドル$ 7ドル$
( "(()" 1ドル$ 아니오 7ドル$
) "()()" 2ドル$ 1ドル$
X "(()" 1ドル$ 아니오 1ドル$
( "((()" 2ドル$ 아니오 1ドル$
) "(()()" 3ドル$ 아니오 1ドル$
) "(())()" 4ドル$ 11ドル$

출처

Contest > 한국정보기술진흥원 > 제3회 청소년 IT경시대회 > 중등부 2번

채점 및 기타 정보

  • 예제는 채점하지 않는다.
(追記) (追記ここまで)

출처

대학교 대회

  • 사업자 등록 번호: 541-88-00682
  • 대표자명: 최백준
  • 주소: 서울시 서초구 서초대로74길 29 서초파라곤 412호
  • 전화번호: 02-521-0487 (이메일로 연락 주세요)
  • 이메일: contacts@startlink.io
  • 통신판매신고번호: 제 2017-서울서초-2193 호

AltStyle によって変換されたページ (->オリジナル) /