Making Server

시간 제한0.5초메모리 제한256 MB

요약
URL, IP, REDIRECT, HTTP 쿼리를 처리하는 DNS 서버를 시뮬레이션한다. 리다이렉트 사슬을 따라가고 IP 주소를 검증한다.
난이도

보통10점 중 6점

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

문제

오늘도 무슨 장난을 칠지 고민하던 교준이는 새로운 DNS 서버를 만들어서 학교 내 GSHS2와 GSHS5에 접속하는 모든 사람들이 송죽에 접속하려고 하면, 다른 사이트에 접속하게 하려고 한다. 하지만 서버를 만드는 건 매우 귀찮은 일이기에 뭔가 부려먹기 쉬운 강민이를 데려다가 서버를 만들려고 한다. 교준이의 성공적인 장난을 도와주려는 강민이를 위해 서버를 만드는 작업을 도와주자.

서버를 만들기 위해 필요한 것은 Domain과 IP다. Domain은 www.acmicpc.net과 같이 문자열로 이루어져 있고, IP는 192.168.0.1과 같이 0 이상 231-1 이하의 정수 4개와 점 3개로 이루어져 있다. 그리고 올바른 IP는 0 이상 255 이하의 수를 사용한다. 우리가 쓰는 Domain 주소는 모두 IP로 변환되어 데이터를 받아온다. IP로 0.0.0.0는 쓰지 않는다. 입력에서 주어지는 Domain은 영어 알파벳으로 시작하고 알파벳과 숫자 및 마침표로 이루어진 공백이 없는 길이 50이하의 문자열이다.

입력

첫 번째 줄에 쿼리의 개수를 의미하는 정수 Q가 주어진다.

두번째 줄부터 Q개의 줄에 걸쳐, 다음 네 가지 중 한 가지의 쿼리가 들어온다.

  • URL D I : D라는 Domain의 IP는 I다. (I는 올바른 IP, I ≠ 0.0.0.0)

    (URL www.acmicpc.net 104.26.10.18 : www.acmicpc.net의 IP = 104.26.10.18)

  • IP I S : I라는 IP를 가진 곳에는 S라는 데이터가 있다. (I는 REDIRECT되지 않은 올바른 IP, S는 영어 알파벳과 숫자로 이루어진 공백 없는 길이 10 이하의 문자열)

    (IP 104.26.10.18 MINJE : 104.26.10.18의 데이터 = MINJE)

  • REDIRECT I1 I2 : I1의 IP를 가진 곳은 이제부터 I2에 연결된다. 이때, I1를 REDIRECT된 IP, I2를 REDIRECT한 IP라고 한다. I1는 REDIRECT되지 않은 IP다. I2의 데이터는 I1의 데이터로 갱신된다. (I1과 I2는 올바른 IP, I1 ≠ 0.0.0.0, I2 ≠ 0.0.0.0)

    (REDIRECT 104.26.10.18 104.26.10.19 : 앞으로 104.26.10.18로 들어오는 요청은 104.26.10.19에 연결된다.)

  • HTTP I (D) : D라는 Domain 또는 I라는 IP를 가진 곳의 데이터를 다음 세 가지 경우로 나누어서 출력한다.

    • 입력 : HTTP www.acmicpc.net (정상적인 경우)

      출력 :

      HTTP 200 OK

      Requested Data : MINJE (IP 쿼리에 의해 주어진 데이터)

    • 입력 : HTTP 19222.222.222.222 (IP의 수가 0 이상 255 이하가 아닌 경우)

      출력 :

      HTTP 400 Bad Request

    • 입력 : HTTP www.acmicpcccc.net (Domain이나 IP가 없는 경우, 또는 데이터가 없는 경우)

      출력 :

      HTTP 404 Not Found

출력

HTTP 쿼리에 대한 값을 출력한다.

제한

모든 입력 데이터는 다음 조건을 만족한다.

  • 1 ≤ Q ≤ 5×104

예제4

  1. 예제 1

    입력
    4
    URL www.acmicpc.net 104.26.10.18
    IP 104.26.10.18 MINJE
    HTTP www.acmicpc.net
    HTTP 104.26.10.18
    
    예상 출력
    HTTP 200 OK
    Requested Data : MINJE
    HTTP 200 OK
    Requested Data : MINJE
    
  2. 예제 2

    입력
    6
    URL www.acmicpc.net 9.9.9.9
    IP 9.9.9.9 IamCoder
    REDIRECT 9.9.9.9 10.10.10.10
    HTTP acmicpc.net
    HTTP 9.9.9.9
    HTTP 10.10.10.10
    
    예상 출력
    HTTP 200 OK
    Requested Data : IamCoder
    HTTP 200 OK
    Requested Data : IamCoder
    HTTP 200 OK
    Requested Data : IamCoder
    
  3. 예제 3

    입력
    9
    HTTP student.gs.hs.kr
    HTTP 12424.12.12.12
    HTTP 123.12.12.12
    IP 12.12.12.12 WOW
    HTTP 12.12.12.12
    URL www.student.gs.hs.kr 12.12.12.12
    URL student.gs.hs.kr 123.12.12.12
    HTTP 123.12.12.12
    HTTP student.gs.hs.kr
    
    예상 출력
    HTTP 404 Not Found
    HTTP 400 Bad Request
    HTTP 404 Not Found
    HTTP 200 OK
    Requested Data : WOW
    HTTP 404 Not Found
    HTTP 200 OK
    Requested Data : WOW
    
  4. 예제 4

    입력
    15
    URL LetGyojunGoIOI2018.org 20.18.6.10
    IP 20.18.6.10 IOI2018
    HTTP LetGyojunGoIOI2018.org
    HTTP www.LetGyojunGoIOI2018.org
    HTTP letgyojungoioi2018.org
    URL www.LetGyojunGoIOI2018.org 6.10.20.18
    IP 6.10.20.18 2018IOI
    HTTP LetGyojunGoIOI2018.org
    HTTP www.LetGyojunGoIOI2018.org
    HTTP WWW.LetGyojunGoIOI2018.org
    URL www.com 0.0.0.1
    IP 0.0.0.1 Possible
    HTTP www.com
    HTTP WWW.com
    HTTP com
    
    예상 출력
    HTTP 200 OK
    Requested Data : IOI2018
    HTTP 404 Not Found
    HTTP 404 Not Found
    HTTP 200 OK
    Requested Data : IOI2018
    HTTP 200 OK
    Requested Data : 2018IOI
    HTTP 404 Not Found
    HTTP 200 OK
    Requested Data : Possible
    HTTP 404 Not Found
    HTTP 200 OK
    Requested Data : Possible