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

문제 5020 · 킬로 IV

충전 대기 줄의 양 끝

인증 제출 통계 · 5분마다 갱신 · 정답 비율 = 정답 제출 / 전체 제출
시간 제한메모리 제한제출정답맞힌 사람정답 비율
1000ms / 테스트 (언어별 보정은 아래 표)메모리: 측정하지 않음(브라우저 채점)0000.00%

문제

한 전기차 충전소에는 충전을 기다리는 차량을 한 줄로 세우는 대기 구역이 있다. 대기 구역의 앞쪽은 충전기와 연결되어 있고, 뒤쪽은 입구와 연결되어 있다. 새로 도착한 차량은 항상 대기 줄의 맨 뒤에 선다. 충전소 관리 장치는 차량의 도착, 충전 안내, 대기 취소를 발생한 순서대로 기록한다. 기록은 문자 A, B, C로 이루어진 문자열이다. 각 문자는 하나의 사건을 나타내며, 문자열의 왼쪽부터 오른쪽까지 차례대로 처리한다. 처음에는 대기 중인 차량이 없다. A는 새 차량의 도착을 뜻한다. 도착한 차량에는 지금까지 등장한 A의 개수를 차량 번호로 부여한다. 따라서 차량 번호는 1부터 시작하여 도착할 때마다 1씩 증가하고, 충전하거나 대기를 취소한 차량의 번호를 다시 사용하지 않는다. B는 대기 줄의 맨 앞 차량 한 대를 충전기로 안내하는 사건이다. 안내된 차량은 즉시 대기 줄에서 빠지고, 충전을 완료한 것으로 집계한다. 충전 시간이나 충전기의 개수는 따로 고려하지 않는다. C는 대기 줄의 맨 뒤 차량 한 대가 대기를 취소하는 사건이다. 취소한 차량도 즉시 대기 줄에서 빠지지만, 충전을 완료한 것으로 집계하지 않는다. 대기 줄이 비어 있을 때 발생한 B 또는 C는 아무 변화 없이 지나간다. 대기 줄에 남아 있는 차량의 순서는 이 세 가지 규칙으로만 바뀐다. 한 차량이 기록 밖에서 다시 도착하는 일은 없으며, 모든 도착은 각각 별개의 차량으로 취급한다. 특히 B와 C가 연속으로 기록되어 있어도 각 사건을 처리한 직후의 대기 줄을 기준으로 다음 사건을 처리해야 한다. 전체 기록을 처리한 뒤, 충전을 완료한 차량 수, 그 차량들의 번호 합, 대기 줄에 남아 있는 차량 수를 구한다.

입력

첫째 줄에 사건의 수를 나타내는 정수 N이 주어진다. (1 ≤ N ≤ 200,000)
둘째 줄에 길이가 N인 문자열 S가 주어진다. S의 각 문자는 A, B, C 중 하나이며, 문자 사이에 공백은 없다.

출력

충전을 완료한 차량 수, 충전을 완료한 차량들의 번호 합, 모든 사건을 처리한 뒤 대기 중인 차량 수를 이 순서대로 한 줄에 공백으로 구분하여 출력한다. 충전을 완료한 차량이 없으면 첫 번째 값과 두 번째 값은 모두 0이다. 대기 중인 차량이 없으면 세 번째 값은 0이다.

예제 입력 1

7
AABACAB

예제 출력 1

2 3 1

예제 입력 2

4
BCBC

예제 출력 2

0 0 0
힌트 펼치기
  • 대기 줄의 앞과 뒤에서 각각 어떤 연산이 필요한지 살펴본다.
  • 차량 번호를 저장하는 배열과 대기 구간의 시작 및 끝 위치를 이용할 수 있다.

관련 서재 장

관련 장

출처: Devin.KR 자체 제작

알고리즘 분류구현시뮬레이션큐

풀이 작성

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

Python 기본 시간 제한 = 문제 시간 제한 × 3 + 2초. 문제별 예외는 아래 표에 반영됩니다. 표준 라이브러리만 지원합니다.

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

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

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

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

    이 브라우저의 연습 기록

      언어별 제한

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

      언어엔진(버전)시간 제한메모리
      javascript사용자 브라우저 JavaScript 엔진 (버전은 브라우저에 따라 다름)1000ms / 테스트측정하지 않음(브라우저 채점)
      pythonPyodide 314.0.7 (CPython 3.14 WASM)5000ms / 테스트측정하지 않음(브라우저 채점)