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

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

우주 구하기 (라지)

면접 대비

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

요약
검색 엔진 집합과 질의 순서가 주어질 때, 질의와 이름이 같은 엔진을 쓰지 않으면서 엔진 교체 횟수가 최소가 되도록 질의를 배정한다.
난이도

보통10점 중 5점

유형
그리디, 구현, 배열, 시뮬레이션
정답자
아직 제출이 없습니다

문제

구글 홈페이지에서 "Google"을 검색하면 우주가 붕괴한다는 도시 전설이 있다. 실제로 그런 일은 일어나지 않는다.

아주 먼 다른 우주에서는 사정이 다르다. 그곳에서는 어떤 검색 엔진에 그 검색 엔진 자신의 이름을 검색하면 정말로 우주가 붕괴한다.

그래서 그곳 사람들은 모든 질의를 한곳에 모으기로 했다. 모인 질의는 중앙 시스템으로 전달되고, 중앙 시스템이 각 질의를 어느 검색 엔진으로 보낼지 정한다. 중앙 시스템은 한 검색 엔진으로 질의를 연달아 보내다가 언제든지 다른 검색 엔진으로 바꿀 수 있다. 질의는 받은 순서대로 처리해야 하고, 이름이 질의와 같은 검색 엔진으로는 그 질의를 절대 보내면 안 된다. 전환에는 비용이 들기 때문에 전환 횟수를 최소로 줄여야 한다.

중앙 시스템을 최적으로 프로그래밍했을 때 검색 엔진을 몇 번 바꿔야 하는지 구하라.

입력

첫째 줄에 테스트 케이스의 개수 NN이 주어진다. 이어서 NN개의 테스트 케이스가 주어진다.

각 테스트 케이스의 첫째 줄에는 검색 엔진의 개수 SS가 주어진다. 다음 SS개 줄에는 각각 검색 엔진의 이름이 주어진다. 이름의 길이는 100자를 넘지 않고, 영어 대문자, 영어 소문자, 공백, 숫자로만 이루어진다. 한 테스트 케이스 안에 이름이 같은 검색 엔진은 없다.

그다음 줄에는 들어오는 질의의 개수 QQ가 주어진다. 다음 QQ개 줄에는 각각 질의가 주어진다. 각 질의는 그 테스트 케이스에 나온 검색 엔진 중 하나의 이름이다.

제한:

  • 0<N≤200 < N \le 20
  • 2≤S≤1002 \le S \le 100
  • 0≤Q≤10000 \le Q \le 1000

출력

각 테스트 케이스마다 다음 형식으로 한 줄씩 출력한다.

Case #X: Y

XX는 테스트 케이스 번호이고, YY는 검색 엔진 전환 횟수다. 처음에 검색 엔진을 고르는 것은 전환으로 세지 않는다.

힌트

예제 1의 첫 번째 테스트 케이스에서는 Dont Ask로 시작해서 여덟 번째 질의 뒤에 NSM으로 바꾸면 된다. 두 번째 테스트 케이스에서는 B9만 계속 써도 되므로 한 번도 바꾸지 않는다.

예제2

  1. 예제 1

    입력
    2
    5
    Yeehaw
    NSM
    Dont Ask
    B9
    Googol
    10
    Yeehaw
    Yeehaw
    Googol
    B9
    Googol
    NSM
    B9
    NSM
    Dont Ask
    Googol
    5
    Yeehaw
    NSM
    Dont Ask
    B9
    Googol
    7
    Googol
    Dont Ask
    NSM
    NSM
    Yeehaw
    Yeehaw
    Googol
    
    예상 출력
    Case #1: 1
    Case #2: 0
    
  2. 예제 2

    입력
    2
    2
    Alpha
    Beta
    0
    3
    Alpha
    Beta
    Gamma
    1
    Gamma
    
    예상 출력
    Case #1: 0
    Case #2: 0