문제 3972 · 비트 I
스마트 홈 조명의 실제 전환
| 시간 제한 | 메모리 제한 | 제출 | 정답 | 맞힌 사람 | 정답 비율 |
|---|---|---|---|---|---|
| 1000ms / 테스트 (언어별 보정은 아래 표) | 메모리: 측정하지 않음(브라우저 채점) | 0 | 0 | 0 | 0.00% |
문제
한 스마트 홈에는 켜짐과 꺼짐 두 가지 상태만 가지는 조명이 하나 있다. 하루의 자동 제어 기록을 실행하기 직전에는 조명이 꺼져 있다. 제어기는 길이가 N인 문자열을 왼쪽부터 한 글자씩 읽으며, 각 글자가 나타내는 동작을 순서대로 실행한다. 기록을 실행하는 동안 사람이 조명을 조작하거나 다른 장치가 조명 상태를 바꾸는 일은 없다. 문자열에는 문자 0, 문자 1, 하이픈 -만 등장한다. 문자 0은 조명을 꺼진 상태로 맞추라는 명령이고, 문자 1은 조명을 켜진 상태로 맞추라는 명령이다. 하이픈 -는 그 순간 조명에 아무 명령도 보내지 않고 현재 상태를 그대로 유지한다는 뜻이다. 각 글자의 처리가 끝난 뒤의 상태가 다음 글자를 처리할 때의 시작 상태가 된다. 제어 기록에 명령이 적혀 있다고 해서 조명의 상태가 반드시 바뀌는 것은 아니다. 이미 켜져 있을 때 문자 1을 처리하면 계속 켜져 있고, 이미 꺼져 있을 때 문자 0을 처리하면 계속 꺼져 있다. 이 두 경우에는 실제 전환이 발생하지 않는다. 반대로 꺼진 상태에서 문자 1을 처리하거나 켜진 상태에서 문자 0을 처리하면 실제 전환이 한 번 발생한다. 하이픈은 앞뒤 명령 사이의 상태를 끊거나 초기화하지 않는다. 따라서 여러 하이픈이 연속해서 나타나더라도 조명은 그 구간 전체에서 같은 상태를 유지한다. 문자열의 처음이나 끝에도 하이픈이 있을 수 있고, 모든 글자가 하이픈일 수도 있다. 기록을 읽기 전 조명이 꺼져 있다는 사실 자체는 전환 횟수에 포함하지 않는다. 관리자는 하루 동안 조명이 실제로 몇 번 전환되었는지와 기록을 모두 처리한 뒤의 상태를 확인하려 한다. 문자열 전체를 순서대로 처리했을 때의 실제 전환 횟수와 마지막 조명 상태를 구한다. 마지막 상태는 꺼짐이면 0, 켜짐이면 1로 나타낸다.
입력
첫째 줄에 문자열의 길이 N이 주어진다. N은 정수이며 1 ≤ N ≤ 1,000이다. 둘째 줄에 길이가 정확히 N인 문자열 S가 주어진다. S는 문자 0, 문자 1, 하이픈 -로만 이루어지며 공백을 포함하지 않는다.
출력
실제 전환 횟수와 마지막 조명 상태를 공백으로 구분하여 한 줄에 출력한다. 마지막 상태는 꺼져 있으면 0, 켜져 있으면 1로 출력한다. 실제 전환이 한 번도 없으면 전환 횟수로 0을 출력한다.
예제 입력 1
8 1-10--01
예제 출력 1
3 1
예제 입력 2
5 0---0
예제 출력 2
0 0
예제 입력 3
1 -
예제 출력 3
0 0
힌트 펼치기
- 현재 상태를 0으로 시작한다. 하이픈이 아닌 글자가 현재 상태와 다를 때만 전환 횟수를 늘린다.
관련 서재 장
알고리즘 분류
문자열구현풀이 작성
연습 채점은 공개 테스트로 실행합니다. 인증 제출은 코드를 봉인한 뒤 새 입력을 실행하고 서버에서 출력을 대조하며 코드와 판정을 저장합니다.
풀이를 제출하면 여기에서 결과를 확인할 수 있습니다.
연습 기록은 이 브라우저에 최근 50개를 저장합니다. 인증 기록은 내 제출에서 확인하세요.
이 브라우저의 연습 기록
언어별 제한
테스트 케이스마다 새 전역에서 실행하며 준비 시간은 제외합니다. 시간 초과된 출력은 검사하지 않습니다. 브라우저·기기 성능에 따라 실행 시간이 달라집니다.
| 언어 | 엔진(버전) | 시간 제한 | 메모리 |
|---|---|---|---|
| javascript | 사용자 브라우저 JavaScript 엔진 (버전은 브라우저에 따라 다름) | 1000ms / 테스트 | 측정하지 않음(브라우저 채점) |
| python | Pyodide 314.0.7 (CPython 3.14 WASM) | 5000ms / 테스트 | 측정하지 않음(브라우저 채점) |