아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

논리의 섬

면접 대비

시간 제한1초메모리 제한128 MB

요약
항상 진실을 말하는 신, 항상 거짓말하는 악마, 밤에만 거짓말하는 인간의 발언이 주어질 때, 가능한 모든 경우에서 반드시 성립하는 사실을 찾아낸다.
난이도

보통10점 중 6점

유형
완전 탐색, 시뮬레이션, 구현, 수학
정답자
아직 제출이 없습니다

문제

논리의 섬에는 세 종류의 주민이 산다. 항상 참말만 하는 신족(divine), 항상 거짓말만 하는 악마족(evil), 그리고 낮에는 참말을, 밤에는 거짓말을 하는 인간족(human)이다. 모든 주민은 다른 모든 주민이 어떤 종족인지 알고 있다.

한 사회과학자가 이 섬을 방문하려고 한다. 겉모습만으로는 세 종족을 구별할 수 없기 때문에, 그는 주민들의 대화로부터 사실을 추론하는 대화 분석기를 만들어 달라고 부탁했다. 알아내고 싶은 사실은 지금이 낮인지 밤인지, 그리고 말을 한 각 주민이 어떤 종족인지이다.

입력

입력은 여러 개의 대화로 이루어진다. 각 대화는 그 대화에 포함된 진술의 개수를 나타내는 정수 nn으로 시작한다. 이어지는 nn개의 줄에는 각각 한 주민의 진술이 하나씩 주어진다. 모든 진술 줄은 말하는 사람의 이름(대문자 A, B, C, D, E 중 하나)으로 시작하고 그 뒤에 콜론 ':'이 온다. 콜론 다음에는 아래 형식 중 하나의 진술이 온다.

  • I am [not] ( divine | human | evil | lying ).
  • X is [not] ( divine | human | evil | lying ).
  • It is ( day | night ).

대괄호 []는 그 안의 단어가 나타날 수도, 나타나지 않을 수도 있음을 뜻하고, 소괄호 ()는 '|'로 구분된 대안 중 정확히 하나가 반드시 나타남을 뜻한다. X는 A, B, C, D, E 중 하나의 이름이다. 어떤 진술 줄에도 연속된 두 개의 공백은 없으며, 한 대화의 진술은 최대 50개이다.

입력은 첫 줄이 n=0n = 0인 대화가 나오면 끝난다. 이 종료 표시는 처리하지 않는다.

출력

각 대화에 대해, 먼저 Conversation #k 형식의 머리글 줄을 출력한다. 여기서 k는 1부터 시작하는 대화 번호이다. 그 다음, 규칙상 그 대화가 일어날 수 없다면 This is impossible.을, 어떤 사실도 추론할 수 없다면 No facts are deducible.를 출력한다. 그렇지 않으면 추론할 수 있는 모든 사실을 다음 형식으로 출력한다.

  • X is ( divine | human | evil ).
  • It is ( day | night ).

X는 말을 한 사람의 대문자 이름으로 바꾼다. 주민에 대한 사실을 이름의 알파벳 순서로 먼저 모두 출력한 뒤, 추론할 수 있다면 지금이 낮인지 밤인지를 출력한다. 서로 다른 대화의 출력 사이는 빈 줄 하나로 구분하며, 마지막 대화 뒤에는 빈 줄을 넣지 않는다.

힌트

이해를 돕기 위해, 어떤 주민 A가 "I am evil."이라고 말한 대화의 추론 과정을 살펴보자. A가 신족이라면 이 말은 거짓이 되므로 신족일 수 없고, 마찬가지로 A가 악마족이라면 이 말이 참이 되므로 악마족일 수도 없다. 따라서 A는 인간족이어야 하며, 지금 거짓말을 하고 있으므로 지금은 밤이어야 한다.

또 다른 예로, A가 B에 대해 서로 모순되는 두 진술(예: "B is human."과 "B is evil.")을 하는 대화를 생각해 보자. A는 분명히 거짓말을 하고 있으므로, B는 인간족도 악마족도 아니어서 신족이어야 한다. 신족 B는 항상 참말을 하므로, B의 진술 "A is evil."에 의해 A는 악마족으로 확정된다.

예제1

  1. 예제 1

    입력
    1
    A: I am divine.
    1
    A: I am lying.
    1
    A: I am evil.
    3
    A: B is human.
    B: A is evil.
    A: B is evil.
    0
    
    예상 출력
    Conversation #1
    No facts are deducible.
    
    Conversation #2
    This is impossible.
    
    Conversation #3
    A is human.
    It is night.
    
    Conversation #4
    A is evil.
    B is divine.