문제 4184 · 바이트 V
호텔 출입 요청 점검
| 시간 제한 | 메모리 제한 | 제출 | 정답 | 맞힌 사람 | 정답 비율 |
|---|---|---|---|---|---|
| 1000ms / 테스트 (언어별 보정은 아래 표) | 메모리: 측정하지 않음(브라우저 채점) | 0 | 0 | 0 | 0.00% |
문제
한 호텔의 보안 담당자는 전자 출입문에 남은 요청 기록을 점검한다. 각 기록에는 출입 카드를 사용한 사람의 역할, 카드의 활성 상태, 카드에 지정된 층, 출입하려는 층, 출입 구역의 종류가 들어 있다. 담당자는 기록에 담긴 정보와 호텔의 규칙만으로 각 요청의 허용 여부를 판정하려 한다. 역할은 투숙객 G, 근무자 S, 관리자 M 중 하나다. 카드의 활성 상태는 0 또는 1이며, 0은 비활성, 1은 활성을 뜻한다. 비활성 카드로 보낸 요청은 역할이나 목적지에 관계없이 모두 거절한다. 아래의 역할별 규칙은 활성 카드에만 적용한다. 구역의 종류는 공용 통로 0, 업무 구역 1, 객실 구역 2로 구분한다. 공용 통로는 각 층에 마련되어 있으며, 활성 카드라면 역할과 지정 층에 관계없이 어느 층의 공용 통로든 이용할 수 있다. 공용 통로 이용이 허용되어도 같은 층의 다른 구역을 이용할 권한까지 생기는 것은 아니다. 투숙객은 카드에 지정된 층의 객실 구역에 들어갈 수 있다. 다른 층의 객실 구역과 모든 업무 구역에는 들어갈 수 없다. 근무자는 카드에 지정된 층의 업무 구역에 들어갈 수 있다. 다른 층의 업무 구역과 모든 객실 구역에는 들어갈 수 없다. 관리자는 지정된 층과 관계없이 모든 층의 모든 구역에 들어갈 수 있다. 각 기록은 서로 독립적인 요청이다. 앞선 요청이 허용되거나 거절되어도 뒤의 카드 상태나 권한은 바뀌지 않는다. 입력에는 모든 역할의 지정 층이 포함되지만, 관리자의 권한을 판정할 때는 그 값을 사용하지 않는다. 호텔에 존재하지 않는 층이나 정의되지 않은 역할 및 구역은 입력으로 주어지지 않는다. 각 요청에 대해 허용이면 ALLOW, 거절이면 DENY를 기록 순서대로 출력한다.
입력
첫째 줄에 요청 수를 나타내는 정수 N이 주어진다. 1 ≤ N ≤ 10,000이다. 다음 N개 줄에는 역할 R, 활성 상태 A, 지정 층 F, 요청 층 T, 구역 종류 Z가 공백으로 구분되어 주어진다. R은 G, S, M 중 하나다. A, F, T, Z는 정수이며 A는 0 또는 1, 1 ≤ F, T ≤ 99, 0 ≤ Z ≤ 2이다. 각 기록에 필요한 정보는 해당 줄에 모두 주어진다.
출력
각 요청에 대해 출입을 허용하면 ALLOW, 거절하면 DENY를 한 줄에 하나씩 출력한다. 총 N개 줄을 출력한다.
예제 입력 1
5 M 0 1 9 2 G 1 3 3 2 G 1 3 4 2 S 1 2 2 1 S 1 2 2 2
예제 출력 1
DENY ALLOW DENY ALLOW DENY
예제 입력 2
3 G 1 1 9 0 S 1 1 9 1 M 1 1 9 2
예제 출력 2
ALLOW DENY ALLOW
힌트 펼치기
- 카드가 비활성인 경우를 먼저 처리한 뒤, 공용 통로와 역할별 규칙을 확인한다.
알고리즘 분류
구현조건문풀이 작성
연습 채점은 공개 테스트로 실행합니다. 인증 제출은 코드를 봉인한 뒤 새 입력을 실행하고 서버에서 출력을 대조하며 코드와 판정을 저장합니다.
풀이를 제출하면 여기에서 결과를 확인할 수 있습니다.
연습 기록은 이 브라우저에 최근 50개를 저장합니다. 인증 기록은 내 제출에서 확인하세요.
이 브라우저의 연습 기록
언어별 제한
테스트 케이스마다 새 전역에서 실행하며 준비 시간은 제외합니다. 시간 초과된 출력은 검사하지 않습니다. 브라우저·기기 성능에 따라 실행 시간이 달라집니다.
| 언어 | 엔진(버전) | 시간 제한 | 메모리 |
|---|---|---|---|
| javascript | 사용자 브라우저 JavaScript 엔진 (버전은 브라우저에 따라 다름) | 1000ms / 테스트 | 측정하지 않음(브라우저 채점) |
| python | Pyodide 314.0.7 (CPython 3.14 WASM) | 5000ms / 테스트 | 측정하지 않음(브라우저 채점) |