문제 3718 · 비트 I
스마트 홈 가림막 기록
| 시간 제한 | 메모리 제한 | 제출 | 정답 | 맞힌 사람 | 정답 비율 |
|---|---|---|---|---|---|
| 1000ms / 테스트 (언어별 보정은 아래 표) | 메모리: 측정하지 않음(브라우저 채점) | 0 | 0 | 0 | 0.00% |
문제
한 스마트 홈에는 창문 가림막 하나가 설치되어 있다. 가림막은 완전히 열린 상태와 완전히 닫힌 상태 중 하나만 가진다. 제어 장치는 여러 곳에서 전달된 명령을 받은 순서대로 문자열에 기록한다. 여러분은 이 문자열을 처음부터 끝까지 처리한 뒤 가림막의 마지막 상태와 실제로 상태가 바뀐 횟수를 계산해야 한다. 명령에는 영문 대문자 O, C, T와 문자 -를 사용한다. O는 가림막을 열린 상태로 만들라는 명령이다. 이미 열려 있다면 그대로 두며, 닫혀 있다면 연다. C는 닫힌 상태로 만들라는 명령이다. 이미 닫혀 있다면 그대로 두며, 열려 있다면 닫는다. T는 현재 상태를 반대로 바꾸라는 명령이므로, 열려 있으면 닫고 닫혀 있으면 연다. -는 통신 장치가 상태를 확인한 흔적으로, 가림막에는 아무 동작도 요청하지 않는다. 상태가 바뀐 횟수는 명령을 처리하기 직전과 직후의 상태가 서로 다른 경우에만 1씩 늘어난다. 따라서 O나 C가 기록되어 있어도 이미 그 상태라면 횟수가 늘어나지 않는다. T는 처리할 때마다 횟수를 1 늘리고, -는 어떤 상태에서도 횟수를 늘리지 않는다. 같은 문자가 연속해서 등장해도 각각 별개의 기록으로 순서대로 처리한다. 가림막은 모든 명령 사이에 동작을 마친다고 가정한다. 동작 시간이나 중간 위치는 고려하지 않으며, 문자열에 없는 자동 동작도 발생하지 않는다. 처음 상태는 입력으로 주어지고, 이 처음 상태 자체는 상태가 바뀐 횟수에 포함하지 않는다. 마지막 상태는 열려 있으면 1, 닫혀 있으면 0으로 나타낸다. 실제 변화가 한 번도 없었다면 변화 횟수는 0이다. 전체 명령을 처리한 결과를 두 정수로 출력한다.
입력
첫째 줄에 명령 기록의 길이 N과 처음 상태 B가 공백으로 구분되어 주어진다. N은 1 이상 1,000 이하의 정수이고, B는 0 또는 1이다. B가 0이면 처음에 닫혀 있고, 1이면 처음에 열려 있다. 둘째 줄에 길이가 N인 문자열 S가 주어진다. S의 각 문자는 O, C, T, - 중 하나이며, 문자열에는 공백이 없다.
출력
마지막 상태와 실제로 상태가 바뀐 횟수를 공백으로 구분하여 출력한다. 마지막 상태는 열려 있으면 1, 닫혀 있으면 0이다. 상태가 한 번도 바뀌지 않았다면 횟수로 0을 출력한다.
예제 입력 1
8 0 OO-TCCT-
예제 출력 1
1 3
예제 입력 2
5 1 O--OO
예제 출력 2
1 0
예제 입력 3
4 1 TTTT
예제 출력 3
1 4
힌트 펼치기
- 각 명령에서 다음 상태를 구하고 현재 상태와 비교한다.
- 명령 개수와 실제 상태 변화 횟수는 다를 수 있다.
관련 서재 장
알고리즘 분류
문자열시뮬레이션풀이 작성
연습 채점은 공개 테스트로 실행합니다. 인증 제출은 코드를 봉인한 뒤 새 입력을 실행하고 서버에서 출력을 대조하며 코드와 판정을 저장합니다.
풀이를 제출하면 여기에서 결과를 확인할 수 있습니다.
연습 기록은 이 브라우저에 최근 50개를 저장합니다. 인증 기록은 내 제출에서 확인하세요.
이 브라우저의 연습 기록
언어별 제한
테스트 케이스마다 새 전역에서 실행하며 준비 시간은 제외합니다. 시간 초과된 출력은 검사하지 않습니다. 브라우저·기기 성능에 따라 실행 시간이 달라집니다.
| 언어 | 엔진(버전) | 시간 제한 | 메모리 |
|---|---|---|---|
| javascript | 사용자 브라우저 JavaScript 엔진 (버전은 브라우저에 따라 다름) | 1000ms / 테스트 | 측정하지 않음(브라우저 채점) |
| python | Pyodide 314.0.7 (CPython 3.14 WASM) | 5000ms / 테스트 | 측정하지 않음(브라우저 채점) |