문제 4696 · 킬로 IV
학원 접수판의 묶음 처리
댓글 0| 시간 제한 | 메모리 제한 | 제출 | 정답 | 맞힌 사람 | 정답 비율 |
|---|---|---|---|---|---|
| 1000ms | 측정하지 않음 | 0 | 0 | 0 | 0.00% |
문제
한 학원에서는 보충 수업 신청을 과목별로 묶어 처리한다. 접수 직원은 신청서가 들어오는 순서대로 과목 기호가 적힌 카드를 접수판에 놓는다. 과목 기호는 영문 대문자 하나이며, 같은 글자는 같은 과목을 뜻한다. 접수판은 처음에 비어 있고, 카드들은 왼쪽에서 오른쪽으로 한 줄을 이룬다. 직원은 새 카드 한 장을 항상 현재 접수판의 맨 오른쪽에 붙인다. 카드를 붙인 직후, 접수판의 오른쪽 끝에 같은 과목 카드가 연속해서 정확히 K장 모이면 그 K장을 하나의 접수 묶음으로 처리하고 접수판에서 제거한다. 처리한 카드의 자리는 남기지 않으며, 그 왼쪽에 있던 카드가 접수판의 새로운 오른쪽 끝이 된다. 접수 묶음은 완성되는 즉시 처리하므로, 완성된 묶음을 남겨 두고 다음 카드를 붙일 수는 없다. 이 과정에서 제거되지 않은 카드는 원래의 상대적인 순서를 유지한다. 서로 다른 과목의 카드가 사이에 끼어 있으면 양쪽의 같은 과목 카드를 하나의 연속 구간으로 세지 않는다. 다만 사이의 카드가 나중에 묶음으로 처리되어 사라지면, 앞에서 남아 있던 카드와 이후에 들어오는 카드가 이어져 새로운 묶음을 만들 수 있다. 접수판의 왼쪽 끝이나 중간에 새 카드를 끼워 넣는 일은 없다. K가 1이면 카드 한 장을 붙이는 즉시 그 카드가 처리된다. 카드 한 장이 접수판에서 제거된 뒤에는 다시 돌아오지 않는다. 입력으로 주어진 모든 카드를 붙인 후에는 남은 카드가 K장 미만인 과목을 임의로 처리하지 않는다. 직원이 모든 신청서를 순서대로 처리한 뒤 접수판에 남아 있는 과목 기호를 왼쪽부터 이어 붙여 출력한다. 접수판이 완전히 비어 있으면 과목 기호 대신 하이픈 한 글자를 출력한다.
입력
첫째 줄에 카드 수 N과 묶음 크기 K가 공백으로 구분되어 주어진다. N과 K는 각각 1 이상 200,000 이하의 정수다. K가 N보다 클 수도 있다. 둘째 줄에 영문 대문자로만 이루어진 길이 N의 문자열 S가 주어진다. S의 i번째 글자는 i번째로 접수되는 카드의 과목 기호다.
출력
모든 카드를 처리한 뒤 남은 과목 기호를 왼쪽부터 이어 붙인 문자열을 한 줄에 출력한다. 남은 카드가 없으면 `-`를 출력한다.
예제 입력 1
12 3 AAABBBAACCAA
예제 출력 1
AACCAA
예제 입력 2
4 2 ABBA
예제 출력 2
-
예제 입력 3
1 1 Z
예제 출력 3
-
힌트 펼치기
- 현재 오른쪽 끝의 과목과 연속 개수를 함께 저장한다.
- 묶음이 제거된 뒤 이전 끝부분을 다시 확인할 수 있는 자료구조를 사용한다.
관련 서재 장
알고리즘 분류
스택문자열풀이 작성
연습 채점은 공개 테스트로 실행합니다. 인증 제출은 코드를 봉인한 뒤 새 입력을 실행하고 서버에서 출력을 대조하며 코드와 판정을 저장합니다.
풀이를 제출하면 여기에서 결과를 확인할 수 있습니다.
연습 기록은 이 브라우저에 최근 50개를 저장합니다. 인증 기록은 내 제출에서 확인하세요.
이 브라우저의 연습 기록
댓글 0
로그인하면 댓글을 쓸 수 있습니다.
댓글 접기·펼치기
언어별 제한
테스트 케이스마다 새 전역에서 실행하며 준비 시간은 제외합니다. 시간 초과된 출력은 검사하지 않습니다. 브라우저·기기 성능에 따라 실행 시간이 달라집니다.
| 언어 | 엔진(버전) | 시간 제한 | 메모리 |
|---|---|---|---|
| JavaScript | 브라우저 JavaScript | 1000ms / 테스트 | 측정하지 않음 |
| TypeScript | TypeScript 5.9.3 | 1000ms / 테스트 | 측정하지 않음 |
| Python 3 | Pyodide 314.0.7 (CPython 3.14 WASM) | 5000ms / 테스트 | 측정하지 않음 |
| C | YoWASP Clang 22 | 2000ms / 테스트 | 측정하지 않음 |
| C++ | YoWASP Clang 22 / libc++ | 2000ms / 테스트 | 측정하지 않음 |
| Java | OpenJDK javac + TeaVM (Java 21 문법) | 3000ms / 테스트 | 측정하지 않음 |
| Lua | Wasmoon 1.16.0 / Lua 5.4 | 3000ms / 테스트 | 측정하지 않음 |
| Ruby | Ruby 3.4 / ruby.wasm 2.10.1 | 5000ms / 테스트 | 측정하지 않음 |
| Scheme | BiwaScheme 0.8.3 | 5000ms / 테스트 | 측정하지 않음 |
| Prolog | SWI-Prolog / swipl-wasm 8.2.5 | 5000ms / 테스트 | 측정하지 않음 |
| Perl | Perl 5.28 / WebPerl 0.09-beta | 5000ms / 테스트 | 측정하지 않음 |