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

문제 4461 · 킬로 V

관측 기록 되감기

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

문제

산속 날씨 관측소는 통신이 불안정할 때도 측정 기록을 수정할 수 있도록 작은 명령 패킷을 사용한다. 수신기는 패킷을 받은 순서대로 처리하며, 현재 유효한 기온 기록을 하나의 목록으로 관리한다. 처음에는 목록이 비어 있다. 수정 명령으로 지운 기록은 이후 명령에서 다시 사용할 수 없다. 각 패킷은 0 이상 255 이하의 정수 하나로 전달된다. 이를 8비트 이진수로 나타냈을 때 상위 2비트는 명령 종류이고 하위 6비트는 자료 값이다. 선행하는 0도 비트의 일부로 생각한다. 패킷 값이 x일 때 명령 종류는 x를 오른쪽으로 6비트 이동한 값이고, 자료 값은 x와 63을 비트 AND한 값이다. 명령 종류가 0이면 새 기온을 목록의 끝에 추가한다. 추가하는 기온은 자료 값에서 32를 뺀 정수이며, 단위는 도이다. 명령 종류가 1이면 최근 기록을 취소한다. 취소 개수는 자료 값에 1을 더한 값이다. 목록의 끝에서부터 그 개수만큼 기록을 지우되, 남아 있는 기록이 더 적으면 목록을 모두 비운다. 명령 종류가 2이면 현재 목록에 대한 조회를 수행한다. 조회 패킷의 자료 값은 항상 0이다. 명령 종류가 3이면 관측 주기가 바뀐 것이므로 목록을 모두 비운다. 이때 자료 값은 어떤 값이든 허용하며 처리 결과에 영향을 주지 않는다. 조회 결과는 현재 유효한 기온 중 최댓값에서 최솟값을 뺀 값이다. 기록이 하나뿐이면 결과는 0이고, 목록이 비어 있으면 결과는 -1이다. 취소와 초기화는 이미 출력한 조회 결과를 바꾸지 않는다. 모든 패킷을 순서대로 처리하여 각 조회 결과를 출력하는 프로그램을 작성한다. 입력에는 조회 패킷이 적어도 하나 주어진다.

입력

첫째 줄에 패킷 수 N이 주어진다. N은 1 이상 90,000 이하의 정수이다.
다음 N개 줄에 패킷 값 x가 하나씩 주어진다. x는 0 이상 255 이하의 정수이다. 명령 종류가 2인 패킷은 반드시 128이다. 값이 128인 패킷이 적어도 하나 존재한다.

출력

조회 패킷이 등장할 때마다 조회 결과를 한 줄에 하나씩 출력한다. 현재 목록이 비어 있으면 -1을 출력한다.

예제 입력 1

10
30
37
128
64
128
95
128
63
0
128

예제 출력 1

7
0
-1
63

예제 입력 2

8
128
32
32
128
255
128
31
128

예제 출력 2

-1
0
-1
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 / 테스트측정하지 않음(브라우저 채점)