만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

가희와 파일 탐색기 2

시간 제한4초메모리 제한512 MB

요약
사용자의 소속 그룹과 파일의 3자리 권한, 소유자, 소유 그룹이 주어질 때 각 질의마다 사용자가 해당 파일을 읽기, 쓰기, 실행할 수 있는지 판단합니다.
난이도

쉬움10점 중 3점

유형
해시맵, 문자열, 구현
정답자
아직 제출이 없습니다

문제

가희는 jo_test 폴더에 들어와 있습니다. jo_test 폴더에는 일반 파일이 NN개 있습니다.

각 파일에는 권한이 있습니다. 권한은 어떤 유저가 특정한 일을 수행할 수 있는지를 나타내며, 3개의 숫자로 구성됩니다.

숫자권한
0아무것도 할 수 없음
1실행 권한이 있음
2수정 권한이 있음
3실행 권한과 수정 권한이 있음
4읽기 권한이 있음
5읽기와 실행 권한이 있음
6읽기와 수정 권한이 있음
7읽기, 실행, 수정 권한이 있음

표 1 숫자와 해당되는 권한

3개의 숫자 중 첫 번째 숫자는 파일을 소유한 유저의 권한을 나타냅니다. 두 번째 숫자는 파일을 소유한 그룹의 권한을 나타냅니다. 세 번째 숫자는 파일을 소유한 그룹에 속하지 않고, 파일을 소유한 유저도 아닌 경우의 권한을 나타냅니다.

예를 들어 파일 train_mugunghwa의 권한이 750이고, 이 파일을 소유한 유저가 cho, 소유한 그룹이 gahui라고 하겠습니다. 그룹 gahui에 속한 유저가 cho1, cho2라고 하겠습니다. 이때 유저 cho는 train_mugunghwa에 대해 읽기, 실행, 수정 권한이 있습니다. 유저 cho2는 train_mugunghwa를 소유한 그룹에 속하므로 이 파일에 대해 읽기와 실행 권한이 있습니다. 마지막으로 유저 gahui는 cho가 아니고, 파일을 소유한 그룹인 gahui에도 속하지 않으므로 이 파일에 대해 아무것도 할 수 없습니다.

유저, 그룹, 그리고 jo_test 폴더 안의 파일에 대한 정보가 주어집니다. 유저가 jo_test 안의 파일에 대해 읽기, 수정, 실행을 시도할 때 성공하는지 실패하는지 판단해 주세요.

각 파일에 대해 유저는 아래와 같은 권한 종류를 가집니다.

유저권한
OWNEROWNER
OWNER는 아니지만, OWNER_GROUP에 속한 유저GROUP
OWNER도 아니고, OWNER_GROUP에 속하지도 않는 유저OTHER

표 2 이름이 FILE_NAME인 파일에 대해 유저가 가지는 권한 종류

입력

첫 줄에 유저 정보의 개수 UU와 jo_test 폴더 안 파일 정보의 개수 FF가 공백으로 구분되어 주어집니다.

다음 UU개의 줄에는 아래 형식 중 하나로 유저 정보가 주어집니다.

  • USER_NAME: 유저 USER_NAME이 있습니다. 이 유저가 속한 그룹에 대한 정보는 없습니다.
  • USER_NAME USER_GROUPS: 유저 USER_NAME이 속한 그룹은 USER_GROUPS에 있습니다.

유저가 속한 그룹이 여러 개이면 쉼표(',')로 구분됩니다. 또한 USER_NAME은 그룹 이름이 USER_NAME인 그룹에 자동으로 속합니다. 유저가 속한 그룹 정보에 USER_NAME이 없더라도, 그룹 이름이 USER_NAME인 그룹에 속한다는 점에 주의하세요.

다음 FF개의 줄에는 아래 형식으로 파일 정보가 주어집니다.

  • FILE_NAME FILE_PERMISSION OWNER OWNED_GROUP: 이름이 FILE_NAME인 파일의 권한은 FILE_PERMISSION이고, 소유자는 OWNER, 소유 그룹은 OWNED_GROUP입니다.

그다음 줄에 질문의 개수 QQ가 주어집니다.

다음 QQ개의 줄에는 USER_NAME, FILE_NAME, OPERATION이 공백으로 구분되어 주어집니다. OPERATION은 'R', 'W', 'X' 중 하나이며, 각각 읽기, 수정, 실행을 뜻합니다. 이 줄은 유저 USER_NAME이 파일 FILE_NAME에 대해 연산 OPERATION을 수행하려고 하는지를 나타냅니다.

출력

각 질문에 대해 연산이 성공하면 1을, 실패하면 0을 출력해 주세요. 각 질문의 답은 한 줄에 하나씩 출력해 주세요.

제한

  • 1≤U,F,Q≤5×1051 \le U, F, Q \le 5 \times 10^5
  • 유저 이름, 그룹 이름, jo_test에 있는 파일 이름은 대문자, 소문자, 숫자로만 구성되며, 길이는 1 이상 10 이하입니다.
  • 유저가 속한 그룹 정보 USER_GROUPS에는 많아야 10개의 그룹이 있습니다. 이 그룹들의 이름은 중복되지 않습니다.
  • UU개의 그룹 정보에 나오는 그룹 개수의 총합은 10510^5를 넘지 않습니다.
  • 파일 정보에 대해:
    • jo_test에 있는 파일만 주어집니다.
    • 존재하는 유저와 그룹만 주어집니다.
    • OWNER 권한을 가진 유저는 GROUP 권한을 가진 유저가 할 수 있는 모든 연산을 할 수 있습니다. GROUP 권한을 가진 유저는 OTHER 권한을 가진 유저가 할 수 있는 모든 연산을 할 수 있습니다.
    • 파일에 대해 수정 권한이 있다면 읽기 권한도 있습니다.
  • 파일 이름은 중복되지 않습니다.
  • 질문에는 jo_test에 있는 파일만 주어지며, 존재하는 유저만 주어집니다.
  • 파일 이름과 유저 이름은 중복되지 않습니다.

예제2

  1. 예제 1

    입력
    3 2
    cho
    gahui alpa
    mysql
    namahage 754 cho alpa
    dochida 644 cho cho
    3
    cho namahage X
    gahui namahage W
    mysql namahage X
    
    예상 출력
    1
    0
    0
    
  2. 예제 2

    입력
    2 2
    OPPA IS,HATE,HOSPITAL
    IHATE JYUSAGI
    DONGMUL 755 OPPA JYUSAGI
    maruchise 754 OPPA JYUSAGI
    2
    OPPA DONGMUL X
    IHATE maruchise X
    
    예상 출력
    1
    1