본문으로 이동
코드패스 by Devin.KR

문제 4732 · 킬로 V

천문대의 상쇄 필터

댓글 0
인증 제출 통계 · 5분마다 갱신 · 정답 비율 = 정답 제출 / 전체 제출
시간 제한메모리 제한제출정답맞힌 사람정답 비율
1000ms측정하지 않음0000.00%

문제

산 위의 천문대는 관측 장치에 넣을 필터 명령을 한 줄의 문자열로 기록한다. 명령에는 영문 대문자와 소문자만 사용한다. 알파벳의 종류는 필터의 종류를 나타내며, 대문자는 해당 필터의 보정을 더하는 명령이고 소문자는 같은 필터의 보정을 되돌리는 명령이다. 예를 들어 Q와 q는 같은 종류의 서로 반대인 명령이다. 장치에는 명령을 저장하는 임시 기록이 있다. 처음에는 이 기록이 비어 있다. 관측 담당자는 주어진 문자열의 문자를 왼쪽부터 하나씩 읽어 임시 기록에 반영한다. 새 명령을 읽었을 때 임시 기록이 비어 있지 않고, 기록의 마지막 명령이 새 명령과 같은 알파벳이면서 대소문자가 서로 다르면 마지막 명령을 기록에서 지운다. 이때 새 명령도 기록에 추가하지 않는다. 그 밖의 경우에는 새 명령을 기록의 맨 뒤에 추가한다. 이 규칙에서 비교하는 대상은 항상 현재 임시 기록의 마지막 명령뿐이다. 앞쪽에 같은 종류의 명령이 있더라도 마지막 명령이 다른 종류라면 상쇄하지 않는다. 또한 대소문자까지 같은 두 명령은 상쇄하지 않는다. 한 명령의 처리가 끝난 뒤에는 다음 입력 명령으로 넘어가며, 이미 처리한 입력 문자를 다시 읽지 않는다. 모든 명령을 처리한 뒤 남아 있는 임시 기록이 실제 관측에 사용할 최종 명령열이다. 최종 명령열의 길이와 그 내용을 구해야 한다. 처음 주어진 명령열에는 적어도 한 문자가 있지만, 서로 반대인 명령들이 상쇄되어 최종 기록은 비어 있을 수도 있다. 이 경우에는 빈 문자열 대신 지정된 표시를 출력한다.

입력

첫째 줄에 명령열의 길이인 정수 N이 주어진다. 1 ≤ N ≤ 200,000이다.
둘째 줄에 길이가 정확히 N인 문자열 S가 주어진다. S의 모든 문자는 영문 대문자 또는 영문 소문자이다.

출력

첫째 줄에 최종 명령열의 길이를 출력한다. 둘째 줄에 최종 명령열을 출력한다. 최종 명령열이 비어 있으면 둘째 줄에 EMPTY를 출력한다.

예제 입력 1

8
ABbaCcdE

예제 출력 1

2
dE

예제 입력 2

4
qQQq

예제 출력 2

0
EMPTY

예제 입력 3

5
AAaBb

예제 출력 3

1
A
힌트 펼치기
  • 임시 기록의 맨 뒤에서만 추가와 삭제가 일어난다.

관련 서재 장

관련 장

출처: Devin.KR 자체 제작

알고리즘 분류스택문자열

풀이 작성

연습 채점은 공개 테스트로 실행합니다. 인증 제출은 코드를 봉인한 뒤 새 입력을 실행하고 서버에서 출력을 대조하며 코드와 판정을 저장합니다.

JavaScript 시간 제한 = 문제 시간 제한 × 1 + 0초. 문제별 예외는 아래 표에 반영됩니다.

Node.js 전체 API는 지원하지 않습니다.

Ctrl+Enter: 연습 채점 · Tab: 들여쓰기 · Esc 후 Tab: 다음 요소로 이동. 언어별 초안은 이 브라우저에 저장됩니다. JavaScript 입력: require('fs').readFileSync(0, 'utf8'), readline 또는 input().

로그인하면 인증 제출을 사용할 수 있습니다.

풀이를 제출하면 여기에서 결과를 확인할 수 있습니다.

    연습 기록은 이 브라우저에 최근 50개를 저장합니다. 인증 기록은 내 제출에서 확인하세요.

    이 브라우저의 연습 기록

      댓글 0

      로그인하면 댓글을 쓸 수 있습니다.

      댓글 접기·펼치기

      언어별 제한

      테스트 케이스마다 새 전역에서 실행하며 준비 시간은 제외합니다. 시간 초과된 출력은 검사하지 않습니다. 브라우저·기기 성능에 따라 실행 시간이 달라집니다.

      언어엔진(버전)시간 제한메모리
      JavaScript브라우저 JavaScript1000ms / 테스트측정하지 않음
      TypeScriptTypeScript 5.9.31000ms / 테스트측정하지 않음
      Python 3Pyodide 314.0.7 (CPython 3.14 WASM)5000ms / 테스트측정하지 않음
      CYoWASP Clang 222000ms / 테스트측정하지 않음
      C++YoWASP Clang 22 / libc++2000ms / 테스트측정하지 않음
      JavaOpenJDK javac + TeaVM (Java 21 문법)3000ms / 테스트측정하지 않음
      LuaWasmoon 1.16.0 / Lua 5.43000ms / 테스트측정하지 않음
      RubyRuby 3.4 / ruby.wasm 2.10.15000ms / 테스트측정하지 않음
      SchemeBiwaScheme 0.8.35000ms / 테스트측정하지 않음
      PrologSWI-Prolog / swipl-wasm 8.2.55000ms / 테스트측정하지 않음
      PerlPerl 5.28 / WebPerl 0.09-beta5000ms / 테스트측정하지 않음